Repository navigation
Conversation
Run the auth suite on plain Playwright and on Endform side by side in a matrix, with workflow_dispatch inputs for --repeat-each and --retries so the comparison can be repeated on one commit. Endform runs use the sanity organization (OQXolTtG) through the ENDFORM_API_KEY secret. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The DOM prop leak guard reads react-dom and @emotion/is-prop-valid from the studio's node_modules when a browser context starts. Endform runners have the e2e package but not those node_modules, so every test failed in the fixture. Write the vocabulary to JSON on the CI machine, ship it via endform.config.ts, and read it when ENDFORM=true. The guard itself runs unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
📦 Bundle Stats —
|
| Metric | Value | vs main (4a1847e) | vs v6.20.0 |
|---|---|---|---|
| Internal (raw) | 4.66 MB | - | +48.0 KB, +1.0% |
| Internal (gzip) | 1.17 MB | - | +16.2 KB, +1.4% |
| Bundled (raw) | 13.79 MB | - | +61.0 KB, +0.4% |
| Bundled (gzip) | 3.28 MB | - | +19.8 KB, +0.6% |
| Import time | 1.80s | +19ms, +1.1% | +4ms, +0.2% |
bin:sanity
| Metric | Value | vs main (4a1847e) | vs v6.20.0 |
|---|---|---|---|
| Internal (raw) | 7.1 KB | - | - |
| Internal (gzip) | 2.9 KB | - | - |
| Bundled (raw) | 7.1 KB | - | - |
| Bundled (gzip) | 2.8 KB | - | - |
| Import time | 5ms | +0ms, +1.3% | +0ms, +1.8% |
🗺️ View treemap · Artifacts
Details
- Import time regressions over 10% are flagged with
⚠️ - Sizes shown as raw / gzip 🗜️. Internal bytes = own code only. Total bytes = with all dependencies. Import time = Node.js cold-start median.
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.
Description
Runs the auth e2e suite (
e2e/playwright.auth.config.ts, 29 tests) on plain Playwright and on Endform side by side, on every PR and push and on demand. It adds the one fix the suite needed to run on remote machines. Below the results is a 30-day look at the main e2e suite insanity-io/sanityCI, which is what this comparison is meant to inform.Changes
.github/workflows/e2e-auth.ymlrunner: [playwright, endform]matrix: the same commit, built the same way, tested by both runners.workflow_dispatchinputsrepeat_eachandretries, passed to both runners.sanityorganization (OQXolTtG) and authenticates with theENDFORM_API_KEYsecret. The CLI is pinned toendform@0.81.5.e2e/helpers/domPropLeaks/vocabulary.ts,e2e/scripts/writeDomPropVocabulary.ts,e2e/endform.config.tsreact-domand@emotion/is-prop-validfrom the studio'snode_moduleswhen a browser context starts. Endform runners have the e2e package but not the studio'snode_modules, so the first Endform run failed all 29 tests in the fixture (run).pnpm --filter e2e dom-prop-vocabularywrites it on the CI machine andendform.config.tsships it to the runners.loadDomPropVocabulary()reads it whenENDFORM=true. The guard runs unchanged.e2e/playwright.auth.config.ts:trace: 'retain-on-failure'under Endform only, so the dashboard has a trace for every failed attempt.Nothing changes when the suite runs natively: no
ENDFORMvariable, same config, same commands.Results: auth suite, Playwright vs Endform
Commit
27f4828,ubuntu-latest, 13 dispatched runs on 27 Oct 2026. Every one of the 899 test executions per runner passed, with no failures and no flaky retries on either side. Endform recorded all of them in orgOQXolTtGon the first attempt.Normal runs (11 runs, 29 tests, retries from config):
Each test repeated 10 times, retries 0 (2 runs, 290 executions each):
How to read these numbers:
Reproduce:
gh workflow run e2e-auth.yml --ref endform/auth-suite-comparison -f repeat_each=10 -f retries=0Context: the main e2e suite in sanity-io/sanity CI
Data from the GitHub Actions API for
sanity-io/sanity, 27 Sep to 26 Oct 2026, at upstream main4a1847e3. Failure causes were classified with the repo's owne2e/scripts/flakeReport/classifier, over all 175 main runs from 13 to 27 Oct. Its verdicts match the weekly E2E flake report on all 55 runs both cover.Suites
e2e.yml), requiredubuntu-8core,retries: 2api.sanity.work, 2 new datasets per rune2e-auth.yml)e2e-embedded.yml)test.yml), requiredbrowser-tests.yml), requiredReliability and cost of
e2e.ymlauto-retry-failed-jobs.ymlhas been disabled since Jan 2026ubuntu-8core. About 108,000 runner-minutes over 30 days, all branchesWhy main runs failed (56 of 175 runs, 13–27 Oct)
deploy-preview, plus a web server start, an npm timeout and an artifact downloadOver single attempts, 85% of 3,825 failed attempts showed the 429 dialog, and 11% saw a healthy API. Staging rate-limits per IP, and concurrent PR runs share GitHub's runner IP range.
Most frequently flaky tests on main (13–27 Oct)
tasks.spec› creates a task for a release version (chromium)tasks.spec› creates a task targeting the active document (chromium)tasks.spec› resolves a task from the tasks list (chromium)expanded.spec› maximized document with enhanced object dialog (both browsers)not.toBeVisibletimes outvision.spec› listen to changes (both browsers)unpublish.spec› unpublish a published document (both browsers)delete.spec› deleted document shows the right name (both browsers)waitFortimeoutWhat moving the main suite to Endform would and wouldn't change
globalSetupwarm-up of up to 120 s from each shard.fullyParallelis on and tests create their own documents.DisplayedDocument.spec.ts.Testing
pnpm vitest run --project=e2e e2e/helpers: 40 tests pass.Notes for release
Not for release. CI and test tooling only, on the
endformdev/sanityfork.🤖 Generated with Claude Code