
Every Salesforce release brings the same ritual. Someone skims the release notes, looks at a few UI screenshots, and the automation suite runs against a preview sandbox a week before go-live to see what turns red.
Winter '27 doesn't suit that routine. The release changes how tests authenticate, which URLs they can call, how CI pipelines get credentials and how pages render. A screenshot skim won't show any of it, and some of it won't produce a clear error either.
This post covers what we found reading the Winter '27 preview release notes (the August 19, 2026 build) with browser-driven automation in mind: the login and integration layer, and the UI layer where Selenium and Playwright suites live. It is a guide for SDETs, QA engineers and Salesforce teams doing Salesforce testing at release time.
Check the dates first
Change | Timing | What it breaks |
OAuth Device Flow restricted to local External Client Apps | Nov 30, 2026 | Device-flow login scripts on standard Connected Apps |
OAuth username-password flow retirement | Feb 20, 2027 (postponed, not canceled) | Any Connected App still authenticating this way |
OAuth user-agent and hybrid user-agent retirement | Spring '27 | Legacy token-grab login flows |
SOAP | Retirement prep now, endpoint stops Summer '27 | SOAP-based session bootstrap on old API versions |
Instance URL enforcement (My Domain required) | Sandboxes now, wider enforcement Spring '27 | Hardcoded |
Salesforce CLI JSON secret output removed | Winter '27 | CI scripts that parse |
Accessibility reflow enforcement | Winter '27 | Fixed-position or zoom-sensitive locators and screenshots |
Profile Filtering on by default | Winter '27 | Tests that enumerate or select user profiles |
Asynchronous sharing recalculation | Spring '27 | Tests asserting record access right after a share change |
Salesforce marks the notes as a preview and says beta and even GA timing can move. Use the table for planning and recheck it against the final release notes.
Your login helper will hurt first
Many Selenium and Playwright frameworks skip the login screen. They get a session through the OAuth username-password flow, device flow or a SOAP login() call, then pass the session ID to the browser through frontdoor.jsp. It is fast and avoids flaky login pages. It also leans on the authentication paths Salesforce is restricting or retiring in this cycle.
Device flow narrows to local External Client Apps with a localhost callback, starting November 30, 2026.
Username-password retirement moved to February 20, 2027. Postponed isn't canceled, so don't read the delay as a reprieve.
User-agent and hybrid user-agent flows go away in Spring '27.
SOAP
login()on API versions 31.0 through 64.0 is in retirement prep, and the endpoint stops in Summer '27. Calling it already requires theUse Any API Authpermission, which your test user may not have.
The way out is the same for all of them. Move to the web-server flow or hybrid web-server flow with PKCE, or migrate the Connected App to an External Client App. Doing that now is far better than three days before a release.
If you don't know which flow your framework uses, find out before anything else. Look at your login helper, then at Login History in the org.
Your CI pipeline may be reading secrets that are no longer there
If a pipeline runs sf org ... --json and parses a token, SFDX auth URL or password out of the output to set up a browser session, that will stop working. Winter '27 strips secrets from the common JSON output. Salesforce provides explicit org auth show-* commands for the cases where you need the value.
The failure is quiet. The script doesn't crash; it hands your framework an empty string where a session ID used to be. Search your CI configuration for anything that greps CLI JSON for a credential and switch it to the explicit commands.

Hardcoded Instance URLs
A literal https://na139.salesforce.com-style URL in a config file, environment file or fixture is a liability. Winter '27 begins rejecting that traffic in sandboxes, with broader enforcement planned for Spring '27. Every org has a My Domain URL, so use it for login, API calls, deep links and redirect targets. In most codebases this is a search-and-replace, and it is much cheaper done now than during a release-week smoke test.
This also belongs in your Salesforce test environment strategy. If sandbox URLs are scattered across fixtures instead of read from one environment-level setting, every refresh and every enforcement change becomes a hunt through the repo.
Locators: an accessibility change that looks like a defect
Winter '27 enforces accessibility reflow across page headers, modals, date pickers, popovers, utility bars, record headers, cards and menus, tested up to 400% zoom. Headers move, text wraps, utility bar labels truncate into tooltips, combobox labels wrap, and ARIA roles and text change on base and Aura components.
None of that is a defect your tests should catch. It is intended behavior, and it breaks any locator that depends on fixed position, exact label text or a specific DOM depth. An XPath like //div[3]/span[2] is a good example.
If your critical flows depend on locators like that, this release is a reasonable moment to move them to role- and name-based ones. In Playwright that means getByRole and similar. In Selenium it means CSS selectors on stable attributes or ARIA labels rather than DOM position. It is more work than a URL replacement, but it also protects you from the next few releases changing the layout again.
Also run your critical-path suite at 200%, 300% and 400% zoom in a sandbox before the release reaches you, and see what moves.

The quieter changes that produce flaky tests
Some Winter '27 changes won't produce a clear error. They make a test that has been stable for two years start to flake, and whoever picks up the ticket spends a day assuming it's a UI bug. Three of them matter for Salesforce multi-user testing, where tests depend on who is logged in and what they are allowed to see.
Profile Filtering is on by default. Users without View All Profiles can no longer see other users' profile names. If a test enumerates profiles to choose a test user, or administers users through the UI during setup, the step can fail on a permission wall rather than a UI change. Check what your test-runner service account actually holds before debugging a selector that was never broken.
Sharing recalculation becomes asynchronous in Spring '27. Apex- and Flow-triggered sharing changes will no longer update share records immediately. A test that changes ownership or a sharing rule and checks access in the next step is testing a race condition, not a feature. That assertion should poll or tolerate eventual consistency.
Record locking gets an automatic retry. Flow now waits ten seconds and retries transactions that hit UNABLE_TO_LOCK_ROW instead of failing straight away. A test that expected the lock error is no longer valid, and runtime on lock-heavy suites may increase.
Each of these is minor alone. Together, across a large regression suite, they produce a pipeline that goes red after an org upgrade with forty new failures and nobody sure which are real regressions.
What Salesforce now tests for you
Winter '27 adds native test tooling at the Flow and Apex layer. Flow Test Mode, currently in beta, lets you save reusable test scenarios with assertions, mock Action and Subflow outputs, and generate AI-written test cases with isolated data from a terminal prompt. Apex gains integration tests in scratch orgs with shared setup and teardown, and real Named Credential callouts instead of mocks.
For Salesforce Flow testing this changes who should own what. If part of your Selenium suite exists only to click through a screen flow and confirm a decision element routed correctly, that check now has a native home that doesn't need a browser or locators.
It doesn't replace UI testing. Native Flow tests verify a flow's internal logic in isolation. They can't show that the flow works from the entry point a real user hits, under real permissions, across a Lightning page, an Experience Cloud portal or the mobile app, with whatever downstream integration consumes the result. That remains the job of your end-to-end suite, and it gets easier to scope once unit-level Flow logic is covered elsewhere. In Salesforce QA architecture terms, the layers get a cleaner division: native tests for logic in isolation, browser and integration tests for the journey.
Flow Test Mode is in beta, so decide what to hand over once it stabilizes. Don't delete coverage on the strength of a preview feature.

A Pre-Winter '27 checklist
Find every login helper and confirm which OAuth or SOAP flow it uses. Flag anything on the retirement list.
Search code and fixtures for instance-specific URLs and replace them with My Domain.
Check every CI script that parses
sf orgJSON for a token, password or auth URL, and move it toorg auth show-*where the value is truly needed.Run the critical-path suite at 200%, 300% and 400% zoom in a sandbox.
Audit locators on your highest-traffic flows for fixed-position or exact-label dependence, starting with modals, date pickers and utility bars.
Confirm what your automation service account can see around profiles, and re-check any user or profile enumeration steps.
Rewrite assertions that check record access immediately after a sharing or ownership change.
List what your suite currently covers at the pure Flow-logic level, and decide what could move to Flow Test Mode once it's stable.
Where this leaves you
Most release notes ask for a skim and a smoke test. This one asks your team to look at four things that have little to do with the app under test: how you authenticate, where your URLs point, how CI handles secrets and how locators find elements. Get those right and most of Winter '27 passes without incident. Skip them and release week goes on failures unrelated to anything Salesforce built.
If you're deciding what stays in Selenium or Playwright and what goes to Salesforce's native Flow and Apex tests, that is the problem TestZeus and Hercules are built around: orchestrating both layers rather than choosing one. If you're working through the same decision, talk to us and we'll compare notes.
Sources
Salesforce Ben, Winter '27 release preparation: https://www.salesforceben.com/salesforce-winter-27-release-what-to-expect-and-how-to-prepare/
Salesforce Dictionary, Winter '27 release notes coverage: https://salesforcedictionary.com/news/salesforce-news-august-19-2026-winter-27-release-notes-enforcement
Salesforce Dictionary, enforcement changes: https://salesforcedictionary.com/news/salesforce-news-august-30-2026-winter-27-enforcement-shuffle
Salesforce Dictionary, password-based auth deadlines: https://salesforcedictionary.com/blogs/salesforce-integration-auth-retirement-2027
// Start testing //








