You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ℹ️ Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".
QA
Risk assessment
Risk level: Low
Test plan
Make sure to go through the list and consider all events that might be related to this story, so we catch edge cases earlier.
Core flow
Platforms to test across: macOS, iOS, iPadOS
MDM
Add enforcement OS updates:
Custom version (existing behavior)
Latest version with deadline_days
Remove minimum version OS updates (clear enforcement)
Switch between enforcement modes (e.g., Custom → Latest version (based on host hardware)->Off)
Verify DDM declaration is resent when a new OS version is detected by GDMF cron
Turn Apple MDM on/off while automatic enforcement is configured
DEP enrollment with automatic enforcement active (verify update_new_hosts implicit behavior)
For mac: Test on Apple Silicon mac, T2 intel mac and pre-t2 Intel mac if possible(This may not be possible and is OK). Validate that the backfill table sets the proper software update device identifier for the type of mac
Ensure Update New Hosts to Latest still works as expected with or without the setting enabled
Fleet (Teams)
Set automatic enforcement at team level
Set different enforcement modes across teams
Transfer host between teams with different enforcement policies. Verify correct target version applies
Verify behavior works as expected on a team and on no-team/unassigned
Host
Host already at or above target version: no enforcement prompt
Offline host: enforcement applies when back online
DEP-enrolled host with automatic enforcement.
What happens? Is the host forced to update during enrollment even with update new hosts to latest disabled? Doc below in Edge Cases
Config
GDMF cron polling interval: verify new versions are detected within 24 hours.
Activity feed shows entry when Fleet auto-updates the target version Note: confirmed with product no longer a requirement
Disabled states: fields that should hide/disable based on dropdown selection (e.g., version input hidden in Latest mode)
Dynamic views: dropdown selection shows/hides correct fields (date vs. days input)
API
Test all API endpoints added or modified in the API changes section of this issue
Verify any new API endpoints appear in the list when adding an API-only user. The API endpoints display name, method, and path is the same as listed in the API reference docs
Verify error handling for invalid inputs where applicable
GitOps (generate + run)
Configure the feature through the UI and run fleetctl generate-gitops
Confirm the generated .yml includes the expected fields (compare with YAML changes in the Product section)
Modify the generated .yml and run fleetctl gitops
Confirm the configuration updates correctly in Fleet
Enable GitOps mode and verify the feature behaves correctly
Apply YAML with minimum_version: "latest" + deadline_days: 14. This succeeds.
Apply YAML with minimum_version: "latest" + deadline: "2025-07-01". This fails with clear error.
Apply YAML with no minimum_version. This clears enforcement
Backward compat: existing YAML with semver + deadline still works unchanged
Permissions
Verify role restrictions are applied correctly for global roles
Verify role restrictions are applied correctly for fleet-level roles
Premium vs. Free: automatic enforcement options return clear error on Fleet Free
Global Admin can set all enforcement modes
Team Admin can set enforcement modes for their team
Observer/Observer+ cannot modify OS update settings
API-only user can set enforcement via API
Edge cases
Host does not support target version: Confirm Fleet doesn't nag or report failure
Engineer: Added comment to user story confirming successful completion of test plan (include any special setup, test data, or configuration used during development/testing if applicable).
QA: Added comment to user story confirming successful completion of test plan.
QA: Determined whether this story needs Playwright automation.
Needs automation: No -> full OS upgrade (major/minor) would be expensive at the moment
Goal
Changes
Product
minimum_versionislatest→ requiredeadline_days, rejectdeadlineminimum_versionis a specific version → requiredeadline, rejectdeadline_daysdeadline_date is required when minimum_version is set to latestdeadline_date is required when minimum_version is set to latestlatestselected, "actorupdated macOS version to latest on hosts assigned to..."Engineering
QA
Risk assessment
Test plan
Core flow
Platforms to test across: macOS, iOS, iPadOS
MDM
deadline_daysupdate_new_hostsimplicit behavior)Fleet (Teams)
Host
Config
Activity feed shows entry when Fleet auto-updates the target versionNote: confirmed with product no longer a requirementRetries
Integrations
Webhook fires when automatic enforcement updates the target version (if configured)Note: confirmed with product no longer a requirementUI
API
GitOps (generate + run)
fleetctl generate-gitops.ymlincludes the expected fields (compare with YAML changes in the Product section).ymland runfleetctl gitopsminimum_version:"latest"+deadline_days: 14. This succeeds.minimum_version:"latest"+deadline: "2025-07-01". This fails with clear error.minimum_version. This clears enforcementPermissions
Edge cases
TargetVersionis not one in the provided list by Apple (see https://fleetdm.slack.com/archives/C03C41L5YEL/p1780339719927589)Supplemental testing
Testing notes
Confirmation