The Two-Speed E2E Testing Strategy: Fast by Default, Adaptive When the UI Changes
January 1, 1970
January 1, 1970
End-to-end testing usually breaks down in one of two ways.
In the first, tests are written “the right way” with stable selectors and careful waits, but they become a tax. Every UI refactor creates a backlog of broken tests, and the team quietly starts ignoring failures. In the second, teams try to move faster with record-and-replay or brittle scripts, and flakiness becomes the norm.
Shiplight AI takes a different approach: run tests as deterministic Playwright actions when you can, and fall back to intent-aware AI execution when you must. That combination turns UI change from a recurring fire drill into a recoverable event, without giving up speed in CI.
Below is a practical strategy you can adopt immediately, whether you are starting from scratch or modernizing an existing Playwright suite.
Traditional automation treats selectors as the contract. If the selector breaks, the test fails, and a human fixes it. That works until your product velocity increases, your design system evolves, or your frontend stack changes how it renders DOM.
Shiplight’s model is closer to how resilient systems are built:
That “locator cache” framing is not a metaphor. In Shiplight’s YAML test flows, you can run natural language steps, you can run action entities with explicit Playwright locators, and you can combine both.
Shiplight runs on top of Playwright, with an AI layer that can interpret intent at runtime. In practice, you get two execution modes:
Fast Mode uses cached, pre-generated Playwright actions and fixed selectors. It is optimized for quick, repeatable runs.
AI Mode evaluates the action description against the current browser state, dynamically finds the right element, and adapts when IDs, classes, or layout change. It trades some speed for resilience.
Shiplight can automatically recover from failures by retrying a failed Fast Mode action in AI Mode. In cloud execution, if AI Mode succeeds, the run continues without permanently modifying the test configuration.
This matters because it changes the economics of maintenance. You can keep your suite optimized for CI while still surviving real-world UI churn.
A strong E2E suite is not just “more tests.” It is a set of workflows that stay readable, reviewable, and resilient as the app changes. Here is a pattern that consistently works.
Shiplight tests are written in YAML with natural language steps, including VERIFY: assertions for AI-powered verification.
A minimal flow looks like this:
goal: Verify user can reset their password
url: https://app.example.com/login
statements:
- Click "Forgot password"
- Enter "qa.user@example.com" in the email field
- Click "Send reset link"
- "VERIFY: A confirmation message is visible"
This is the right level of abstraction for collaboration. Product, design, QA, and engineering can all review the intent without parsing framework-specific code.
Once the flow is correct, convert the most frequently executed actions into deterministic steps with explicit locators, while keeping verification intent clear. Shiplight’s documentation calls out that natural language steps can take longer, while locator-backed actions replay quickly.
This is where two-speed testing starts paying off:
When the inevitable happens (a button is renamed, a component is replaced, a layout shifts), you want graceful degradation:
Shiplight supports auto-healing by switching to AI Mode when Fast Mode actions fail, both in the editor and during cloud execution.
Most teams do not struggle to run E2E tests. They struggle to interpret failures quickly enough to keep shipping.
Shiplight’s cloud debugging workflow includes real-time visibility, screenshots, and step-level context. The Live View panel and screenshot gallery are designed to shorten the “what happened?” loop.
On top of that, Shiplight can generate AI summaries of failed test results, including root cause analysis, expected vs actual behavior, and recommendations. Summaries are cached after generation so subsequent views load instantly.
If you want a north star for E2E maturity, it is this:
Two-speed execution becomes even more valuable when it fits cleanly into daily engineering workflows.
Shiplight’s YAML flows are designed to be run locally with Playwright using the shiplightai CLI, and the docs emphasize “no lock-in” with the YAML format as an authoring layer.
For teams that live in their editor, Shiplight’s VS Code extension supports stepping through YAML statements, inspecting action entities inline, and iterating without switching browser tabs.
Shiplight provides a GitHub Actions integration via ShiplightAI/github-action@v1, supporting suite execution and common patterns like preview deployments.
And for teams that want automated monitoring beyond PR gates, Shiplight Cloud supports suites and schedules that can run on recurring cadences (including cron-based schedules).
Two-speed E2E testing is especially effective when:
If you are assessing whether this model fits your team, run a small pilot:
Shiplight is built to get teams up and running quickly, with minimal setup and a clear path from local testing to cloud execution.