Repository navigation
ci: smoke-run each adapter's desktop example against a local fixture site - #463
Merged
Merged
Conversation
…site The examples drive live third-party pages, so a site change can silently stop an example producing rows (example.com dropping its <h1> went unnoticed for weeks). A new examples-smoke job serves a local copy of the-internet's login flow, runs WDIO mocha, Selenium mocha, Nightwatch BDD and Python pytest in trace mode with headless Chrome, and checks each trace zip against a per-example expectation file: the rows under each test's own group (or the whole run where the runner gives no per-test groups), an error row on each deliberately failing test, the run's exit code, and no wait timeout in any runner's wording in stdout or the run log. Every desktop login example now reads DEVTOOLS_EXAMPLE_BASE_URL and defaults to the public site, so manual runs are unchanged. The Selenium mocha example moves from example.com to the-internet like the others. The fixture site and the checker live in packages/conformance/smoke so they are linted, typechecked and unit-tested. Closes #456
… smoke job The Selenium mocha example gains a test that waits 1 s for an element no page renders, so the smoke run covers the failed `wait` row: its expectation asks for a Browser.waitForFunction row naming the condition and an error matching "Wait timed out". Only a test-scoped entry can mark its timeout as expected, and only the lines of that test's own error rows are then exempt from the run-wide timeout check; a run-scoped entry carrying the flag is rejected. The checker also reads each row's call site from the trace's stack frame. Every row of a test-scoped entry must carry one and a run-scoped entry needs at least one, since a row losing its call site is the regression that matters, and every call site must point into the example's own files (sourceFiles in each expectation file), never into an adapter package or a dependency. Refs #456
vishnuv688
force-pushed
the
ci/456-examples-smoke
branch
from
October 27, 2026 09:15
5457f24 to
5e2a7d9
Compare
vishnuv688
marked this pull request as ready for review
October 27, 2026 10:38
Contributor
[Medium impact] The PR appears safe to merge; no new actionable defect was established. SummaryAdds a CI smoke job that runs one desktop example per adapter against a local login site.
No new actionable issues were found. Browser runs were not performed during this review. Diagram%%{init: {'theme': 'neutral'}}%%
flowchart LR
Fixture[Local fixture site] --> Examples[Four desktop examples]
Examples --> Archives[Trace archives and run logs]
Archives --> Checker[Per-example checks]
Checker --> Result[CI pass or failure]
Reviews (4) · Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." · Reviewed by Greptile |
…to ci/456-examples-smoke # Conflicts: # CLAUDE.md
…per test A retried test can now declare `attempts`: the checker requires that many attempts and reads rows and errors from the last one only, so a failing final attempt no longer passes on the strength of an earlier one, as the Selenium flaky test could with a nonzero exit accepted. The Nightwatch expectations are per test: the trace groups every row under its own it(), so the run-scoped fallback checked less than the trace allows.
…to ci/456-examples-smoke
4 of 18 tasks
# Conflicts: # packages/conformance/package.json # pnpm-lock.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Closes #456
Stacked on #453 (base
fix/selenium-rows-after-wait): the Selenium example's failed-wait check needs #453'swaitrow. Retarget tomainonce #453 merges.CI never runs
examples/: they need a real browser and they drive live third-party pages. When example.com stopped serving an<h1>, the Selenium mocha example's element wait timed out and the tests after it silently produced no rows; it went unnoticed for weeks and was first read as a capture regression (#453). This adds a CI job that runs each adapter's desktop example against a local copy of the pages and checks the trace it writes.packages/conformance/smoke/fixture-site.ts): a dependency-free Node server copying the-internet's login flow (/,/login, the form POST,/secure,/logout) with the same selectors, titles and messages. Bound to 127.0.0.1, it serves no files.DEVTOOLS_EXAMPLE_BASE_URLand defaults to the public site, so manual runs are unchanged. The Selenium mocha example moves from example.com to the-internet like the others.pnpm smoke:assert): reads everytrace-*.zipan example wrote and checks it against a per-example expectation file (packages/conformance/smoke/expectations/). It checks:Browser.waitForFunctionrow naming the condition and an error matching "Wait timed out".examples-smokejob inci.yml: builds, installs the Python adapter, starts the fixture site, runs WDIO mocha, Selenium mocha, Nightwatch BDD and Python pytest once each in trace mode with headless Chrome, checks each zip, and uploads the zips and logs on failure. Actions are pinned by SHA like the other jobs.Type of change
Packages touched
shared(types and contracts)core(framework-agnostic capture/reporting)elements(published element/snapshot API —@wdio/elements)service(WebdriverIO adapter)nightwatch-devtools(Nightwatch adapter)selenium-devtools(Selenium adapter)selenium-devtools-py(Selenium Python adapter)backend(server)app(UI)script(page-injected runtime)trace(Trace mode)The tooling lives in the private
packages/conformance(undersmoke/) so it is linted, typechecked and unit-tested; the rest isexamples/, CI and docs. No published package changes, so no changeset.Notes for reviewers
pnpm test2902 passed (60 new tests for the fixture site and the checker, run against zips written by the real trace exporter),pnpm lint0 errors,pnpm typecheckclean, actionlint and shellcheck clean, and the fixture site checked with curl.Screenshots / recordings
n/a (no UI change)
🤖 Generated with Claude Code