playwright-e2e
Skill1k starsChanged 25 days agoBSD-3-ClauseView on GitHub
writing, running, and debugging Playwright tests; creating and recreating scratch orgs (Dreamhouse, minimal, non-tracking); working with their output from github actions
- Reads credentials
- Deletes or force-pushes
13 other projects use a version of this.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Most recently taken up by
- nledford/engineering-review-boardtheir own version, first seen Nov 3, 2026
- willcoliveira/playwright-ts-templatetheir own version, first seen Oct 29, 2026
- willcoliveira/qualiow-playwright-skillstheir own version, first seen Oct 28, 2026
- mikulgohil/claude-skillstheir own version, first seen Oct 13, 2026
- ch4570/vulporatheir own version, first seen Oct 11, 2026
- yuanJewel/skillstheir own version, first seen Oct 11, 2026
Who's talking about forcedotcom/salesforcedx-vscode
- prettier/prettier-vscode“Couldn't resolve parser "json-stringify"”GitHub · Jun 5, 2018 · 23 reactions
- Stack Overflow“VSCode / Salesforce - Deploy Source to Org very slow to complete, although actual deployment is fast?”Stack Overflow · Jun 26, 2023 · 4 votes
- xixiaofinland/sf.nvim“Debugging functionality”GitHub · Oct 1, 2024 · 3 reactions
- EclipseFdn/open-vsx.org“Claiming namespace salesforce”GitHub · May 3, 2023 · 2 reactions
- forcedotcom/salesforcedx-apex“fix: set correct exit codes on failure”GitHub · Apr 23, 2021 · 2 reactions
The biggest 5 of 52 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 52
Talked about on GitHub and Stack Overflow (52 times).
On GitHub · 50
- Jun 5, 2018Couldn't resolve parser "json-stringify" — prettier/prettier-vscode23 reactions · 6 comments
- Oct 1, 2024Debugging functionality — xixiaofinland/sf.nvim3 reactions · 14 comments
- May 3, 2023Claiming namespace salesforce — EclipseFdn/open-vsx.org2 reactions · 21 comments
- Apr 23, 2021fix: set correct exit codes on failure — forcedotcom/salesforcedx-apex2 reactions
- Sep 11, 2024E2E tests fail in VSCode version 1.93.0 with "target window already closed" when running "Developer: Reload Window" — webdriverio-community/wdio-vscode-service1 reaction · 11 comments
45 more on GitHub
- Sep 30, 2020Trigger completions on specific characters — forcedotcom/lightning-language-server1 reaction · 2 comments
- Jun 25, 2019Source commands do not display error information — forcedotcom/cli1 reaction · 34 comments
- Aug 27, 2018Inform extensions that call 'vscode.openFolder' with file URIs created with URI.parse — microsoft/vscode1 reaction
- Aug 3, 2017Show externalised strings in extension editor contributions tab — microsoft/vscode1 reaction · 8 comments
- Nov 6, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 5 updates — certinia/debug-log-analyzer0 reactions
- Nov 5, 2026claude-code-plugins.github.forcedotcom.salesforcedx-vscode: 68.8.0 → 68.10.0 — sudosubin/agents.nix0 reactions
- Nov 5, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 4 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Nov 4, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: 68.8.0 → 68.10.0 — sudosubin/agents.nix0 reactions
- Nov 4, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 2 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 29, 2026claude-code-plugins.github.forcedotcom.salesforcedx-vscode: 68.6.1 → 68.8.0 — sudosubin/agents.nix0 reactions
- Oct 29, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: 68.6.1 → 68.8.0 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: 68.6.0 → 68.6.1 — sudosubin/agents.nix0 reactions
- Oct 27, 2026claude-code-plugins.github.forcedotcom.salesforcedx-vscode: 68.6.0 → 68.6.1 — sudosubin/agents.nix0 reactions
- Oct 27, 2026build(deps-dev): bump @salesforce/playwright-vscode-ext from 1.7.0 to 1.7.1 in the development-dependencies group across 1 directory — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 26, 2026build(deps-dev): bump @salesforce/playwright-vscode-ext from 1.7.0 to 1.7.1 in the development-dependencies group across 1 directory — certinia/debug-log-analyzer0 reactions · 2 comments
- Oct 22, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 10 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 21, 2026claude-code-plugins.github.forcedotcom.salesforcedx-vscode: 68.4.0 → 68.6.0 — sudosubin/agents.nix0 reactions
- Oct 21, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: 68.4.0 → 68.6.0 — sudosubin/agents.nix0 reactions
- Oct 21, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 8 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 19, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 7 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 16, 2026claude-code-plugins.github.forcedotcom.salesforcedx-vscode: 68.2.0 → 68.4.0 — sudosubin/agents.nix0 reactions
- Oct 16, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: 68.2.0 → 68.4.0 — sudosubin/agents.nix0 reactions
- Oct 16, 2026build(deps-dev): bump @salesforce/vscode-services from 67.20.0 to 67.27.5 — forcedotcom/apex-language-support0 reactions · 2 comments
- Oct 16, 2026feat(git): replace isomorphic-git with Effect Git - W-22711959 — forcedotcom/source-tracking0 reactions · 3 comments
- Oct 16, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 4 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 14, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 2 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 14, 2026claude-code-plugins.github.forcedotcom.salesforcedx-vscode: 67.26.0 → 68.2.0 — sudosubin/agents.nix0 reactions
- Oct 13, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: 67.26.0 → 68.2.0 — sudosubin/agents.nix0 reactions
- Oct 12, 2026build(deps-dev): bump @salesforce/vscode-services from 67.26.0 to 67.27.1 in the development-dependencies group — certinia/debug-log-analyzer0 reactions · 1 comment
- Oct 4, 2026claude-code-plugins.github.forcedotcom.salesforcedx-vscode: init at 67.26.0 — sudosubin/agents.nix0 reactions
- Oct 3, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: 67.20.0 → 67.26.0 — sudosubin/agents.nix0 reactions
- Sep 27, 2026agent-skills.github.forcedotcom.salesforcedx-vscode: init at 67.20.0 — sudosubin/agents.nix0 reactions
- Sep 25, 2026build(deps-dev): bump @salesforce/vscode-services from 67.17.18 to 67.20.0 — forcedotcom/apex-language-support0 reactions · 1 comment
- Sep 24, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 16 updates — certinia/debug-log-analyzer0 reactions
- Sep 18, 2026build(deps-dev): bump @salesforce/vscode-services from 67.15.0 to 67.17.4 — forcedotcom/apex-language-support0 reactions · 1 comment
- Sep 17, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 14 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Sep 11, 2026build(deps-dev): bump the development-dependencies group across 1 directory with 9 updates — certinia/debug-log-analyzer0 reactions · 1 comment
- Aug 28, 2026build(deps-dev): bump @salesforce/vscode-services from 67.10.0 to 67.13.3 — forcedotcom/apex-language-support0 reactions
- Aug 24, 2026Use Org Metadata Catalog for find-missing-artifact org lookups - W-23971749 — forcedotcom/apex-language-support0 reactions · 3 comments
- Aug 21, 2026build(deps-dev): bump @salesforce/vscode-services from 67.7.1 to 67.10.0 — forcedotcom/apex-language-support0 reactions
- Aug 19, 2026feat: export stdValueSetRegistry.json from main index.ts to be called properly outside this repo - W-23802414 — forcedotcom/source-deploy-retrieve0 reactions
- Jul 31, 2026build(deps-dev): bump @salesforce/vscode-services from 67.6.0 to 67.7.1 — forcedotcom/apex-language-support0 reactions
- Jul 24, 2026build(deps): bump @salesforce/vscode-i18n from 66.7.1 to 66.8.0 — forcedotcom/apex-language-support0 reactions
- Jul 8, 2026Support new SFDX: Create OpenAPI Document from This Class (Beta) — RoseSilverSoftware/IlluminatedCloud0 reactions
- Jul 8, 2026Agentforce for Developers inline autocompletion not working (temporary Salesforce API regression) — RoseSilverSoftware/IlluminatedCloud0 reactions
On Stack Overflow · 2
Used with
Projects with it also use security-review.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SentrySkillsecurity-review
Finds exploitable application security vulnerabilities in code changes. Use for Warden security scans, appsec review, OWASP-style checks, authentication or authorization bugs, injection, XSS, SSRF, path traversal, secrets, unsafe crypto, webhook verification, open redirects, or sensitive data exposure.
Also in 3 projects that use this
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 13
- hmislk/hmis★ 244same name
- willcoliveira/qualiow-playwright-skills★ 19same name
- nledford/engineering-review-board★ 11same name
- willcoliveira/playwright-ts-template★ 5same name
- 5dive-ai/skills★ 2same name
- yuanJewel/skills★ 2same name
- ch4570/vulpora★ 1same name
- alsovdev/playwright-e2e★ 0same name
- BhavinM/my-claude-setup★ 0same name
- kskonovalov/claude-skills★ 0same name
3 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository46 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/doc-maintenance.mdcCursor rule
- .cursor/rules/verification.mdcCursor rule
- .cursor/rules/wireit.mdcCursor rule
- vscode-extension-launchSkill
- announce-prereleaseSkill
- backlog-groomingSkill
- changelogSkill
- command-uiSkill
- conciseSkill
- core-extension-apiSkill
- dependabot-alertsSkill
- drivable-vscodeSkill
- effect-best-practicesSkill
- external-consumersSkill
- feature-branchSkill
- grill-meSkill
- gus-cliSkill
- i18n-messagesSkill
- icons-srcSkill
- lit-componentsSkill
- lit-webview-architectureSkill
- lit-webview-testingSkill
- lsp-custom-requestsSkill
- merge-conflictsSkill
- packageJsonSkill
- patch-releaseSkill
- pathsSkill
- pr-draftSkill
- query-app-insightsSkill
- releaseSkill
- services-extension-consumptionSkill
- shipped-issuesSkill
- span-file-exportSkill
- thermo-nuclear-code-quality-reviewSkill
- ts1261-filename-casingSkill
- ts4023-effect-errorsSkill
- typescriptSkill
- verificationSkill
- vscode-elements-webviewsSkill
- vscode-window-messagesSkill
- web-console-local-tracesSkill
- wireitSkill
- work-item-sequencingSkill
- changelog-judgmentSkill
- manual-test-plan-judgmentSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 4 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
Default: process.env.E2E_FROM_VSIX === '1' — set in CI to enable without code changes.
- Distinctive: line 72
Pattern: Run command, capture artifacts, reload window to flush TelemetryFile buffer (fires deactivationEvent), then assert event/span …
- Distinctive: line 76
If you aren't sure if orgs are set up locally,
- Very specific: line 82
Look for the required org aliases (e.g., minimalTestOrg, nonTrackingTestOrg, orgBrowserDreamhouseTestOrg).
- Very specific: line 84
Pro tip: Use sf org list --json | jq '.result.scratchOrgs[] | select(.alias) | .alias' to list only scratch org aliases.
- Very specific: line 88
When running Playwright tests (pnpm … test:web, test:desktop, etc.), never block >30s.
- Distinctive: line 103
write the file on disk (desktop fs / web memfs), or
- Distinctive: line 123
When testing native Test Controller surfaces (Test Explorer, Test Results panel):
- Very specific: line 125
Test Results panel: Wait for tab visibility, then assert Pass Rate text (e.g., getByText(/Pass Rate/i))
- Very specific: line 127
Locators: Use TEST_RESULTS_TAB = 'a.action-label[aria-label="Test Results"]' to target panel tab reliably
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Playwright E2E Tests
Guidelines for writing and iterating on Playwright tests for VS Code extensions.
Required Reading
Read ALL before responding:
references/coding-playwright-tests.md- Writing tests; post-setup flow recording and explicit screenshot boundariesreferences/local-setup.md- Scratch org setup (Dreamhouse, minimal, non-tracking)references/iterating-playwright-tests.md- Iterating on tests ("Things to ignore" for failure analysis)references/analyze-e2e.md- Analyzing E2E test results and attached videos from CI
Use playwright-vscode-ext
Shared code (helpers, locators, configuration) for tests.
Desktop workspace shapes (pick one per test):
- No folder open — fixture opens a Salesforce project, then call
prepareNoFolderOpenForPaletteTests(page)(runsWorkspaces: Close Workspace+ workbench wait). Or usecloseWorkspaceToEmptyWindowif UI is already prepared. - Folder open, no
sfdx-project.json—createDesktopTest({ emptyWorkspace: true }); workspace path comes fromcreateEmptyTestWorkspace()(also exported from the package). - Default org in workspace — pass
orgAlias: '…'(e.g.MINIMAL_ORG_ALIAS/NON_TRACKING_ORG_ALIAS/DREAMHOUSE_ORG_ALIAS) so.sfdx/config.jsongetstarget-org. OmitorgAliasor useundefinedfor noconfig.json(no org). - Multi-package directory, no org —
multiPackageNoOrgDesktopTest(extendnoOrgDesktopTest); creates a temp workspace withsfdx-project.jsonlisting multiplepackageDirectories(force-app,extra-pkg). UsemultiPackageNoOrgTestfromfixtures/index.tsin test files.
VSIX mode (useVsix option):
createDesktopTest({ useVsix: true })— installs built VSIXs into a hash-keyed cache dir (.vscode-test/ext-<hash>/) and launches VS Code with--extensions-dirinstead of--extensionDevelopmentPath. Exercises real shipping artifact (bundleddist/,.vscodeignore,packageUpdates).- Installs requested local VSIX dirs in
extensionDependenciesorder (from each localpackage.json), so local dependency VSIXs install before dependents. - Default:
process.env.E2E_FROM_VSIX === '1'— set in CI to enable without code changes. - Requires
vscode:packageto have run first (produces.vsixin package dir).test:desktopdepends onvscode:packagefor this reason. - Idempotent across parallel workers: atomic rename; second worker skips if cache exists.
Code Builder container mode (createContainerConfig, createContainerTest):
createContainerConfig({ testDir: '…' })— config for driving tests against a running Code Builder container. Container lifecycle (run, extension swap, health checks) managed by orchestrator/CI, not Playwright. Tests drive a browser-client to the container URL (like web mode) while the workbench runs the desktop extension build. Use envCODE_BUILDER_URL(defaults tohttp://localhost:8123).createContainerTest()— fixture that navigates a plain Chromiumpageto the container workbench and waits for readiness. Specs reuse existing page objects (commands, helpers, locators) unchanged.- Seeding:
seedWorkspace(exported from the toolkit) handles post-boot writes (coder.jsonpath + workspace-trust setting). Works with fixture projects mounted into the container (e.g.test/playwright/fixtures/container-workspace/). Call after workbench readiness, before extension swap/restart.
Span files (when debugging traces)
Available local + CI/GHA.
- Output:
~/.sf/vscode-spans/—web-*.jsonl(test:web),node-*.jsonl(test:desktop) - Auto-enabled (no manual enable needed)
- CI runs: copied into package
test-results/spans/artifacts (see workflow upload/download inreferences/analyze-e2e.md) - Latest:
ls -lt ~/.sf/vscode-spans/ - Clear before run for fresh output:
rm -rf ~/.sf/vscode-spans/ - Format: JSONL; parse each line with
JSON.parse - Fields:
name,traceId,spanId,parentSpanId,durationMs,status,startTime,attributes
See .claude/skills/span-file-export/SKILL.md for enable/OTLP vs file.
Telemetry inspection (diagnostic tests)
Desktop tests can inspect both telemetry pipelines on-disk for diagnostic/integration testing:
- O11y spans — produced by services Effect pipeline; written to
~/.sf/vscode-spans/*.jsonl(auto-enabled) - AppInsights events — produced by class-based TelemetryFile reporter when
localTelemetryLoggingis enabled; written to{workspace}/salesforcedx-vscode-core-telemetry.json(AppInsights shape, real client inert in dev/test)
Fixture setup: Enable both pipelines by passing additionalExtensionDirs: ['salesforcedx-vscode-core'] (for core extension + TelemetryFile reporter) and userSettings: { 'telemetry.telemetryLevel': 'all', 'salesforcedx-vscode-core.advanced.localTelemetryLogging': 'true' } to createDesktopTest. Launch against a real scratch org (e.g., orgAlias: MINIMAL_ORG_ALIAS) so org-identity attributes populate in both pipelines.
Reading artifacts:
- Spans: parse
~/.sf/vscode-spans/*.jsonlline-by-line withJSON.parse - AppInsights events: file contains comma-separated pretty JSON objects; wrap in
[]and strip trailing comma to parse:JSON.parse([${raw.trim().replace(/,\s*$/, '')}])
Pattern: Run command, capture artifacts, reload window to flush TelemetryFile buffer (fires deactivationEvent), then assert event/span presence + attributes. See packages/salesforcedx-vscode-lightning/test/playwright/specs/telemetryOutput.desktop.spec.ts for example.
Checking for Scratch Orgs
If you aren't sure if orgs are set up locally,
sf org listLook for the required org aliases (e.g., minimalTestOrg, nonTrackingTestOrg, orgBrowserDreamhouseTestOrg). If missing, create them using the appropriate setup commands from references/local-setup.md.
Pro tip: Use sf org list --json | jq '.result.scratchOrgs[] | select(.alias) | .alias' to list only scratch org aliases.
Running tests (AI behavior)
When running Playwright tests (pnpm … test:web, test:desktop, etc.), never block >30s. Use is_background: true so tests run while the AI continues. Check terminal output or output_file later.
Apex OAS E2E Tests
Playwright desktop tests live in packages/salesforcedx-vscode-apex-oas/test/playwright/specs/ with dedicated CI workflow .github/workflows/apexOasE2E.yml (macOS + ubuntu, desktop only). Specs share one MINIMAL_ORG_ALIAS scratch org and are serialized via workers: 1 in playwright.config.desktop.ts. Tests that deploy ESR metadata requiring API >=66 call setWorkspaceApiVersion() to bump the fixture's default sourceApiVersion (64.0 → 66.0). Specs that click modal-dialog buttons require window.dialogStyle: custom in the fixture's userSettings. The OAS REST generation path requires an LLM service registered with the VS Code service provider — supplied at runtime by A4V (salesforce.salesforcedx-einstein-gpt), which is no longer a declared extensionDependency. The AuraEnabled path needs only an active org. Specs exercising REST generation install A4V via the desktop fixture's pre-launch step; obtaining the LLM service is fail-fast, so waitForA4VAndOasCommands calls waitForExtensionsActivated to ensure the provider has registered its command before generation runs.
A4V LLM rate limit = skip, not fail (pre-migration): the shared Core model exhausting its monthly quota is an infra outage, not a product bug — it can hit any spec that triggers a generation LLM call (all composed/decomposed/context-menu specs), not just manual-merge. The extension surfaces it as a real error notification (/monthly rate limit/, from the llm_monthly_rate_limit i18n message) instead of the old generic "LLM did not return any content", so specs detect it straight from the UI — no span-file scan. Wrap the generation success signal with assertGenerationOrSkipOnRateLimit(test, page, success) (oasHelpers): success is the success assertion (expect(tab).toBeVisible() or waitForEsrFile(...)); it races the rate-limit notification and test.skips if that wins, else resolves/rethrows. The eligibility-failure specs (ineligibleClass, mixedFrameworksClass, restResourceNoHttpMethod) fail before any LLM call and need no guard.
Don't use the clipboard to set editor content
navigator.clipboard.writeText + Paste is a shared global resource — desktop Electron clipboard is the system OS clipboard (electronjs.org/docs/latest/api/clipboard), so parallel workers (fullyParallel: true) race: worker B's write between A's write and A's Paste makes A paste B's text. Flaky, hard to diagnose.
Set content directly instead:
- type via
page.keyboard.type(text)afterfocusMonacoInput+ Select All + Delete (editor selection), or - write the file on disk (desktop fs / web memfs), or
- set the editor model value through a VS Code command.
Note: "keyboard shortcut can miss on web" comments refer to shortcut keystrokes (Cmd+A/Cmd+V) not landing — fix is command-palette Select All/Paste, not clipboard. Clipboard ≠ required for that.
Running Full E2E Test Suite
See references/full-suite-execution.md for complete guide on running all E2E tests locally across all 9 packages in correct dependency order with failure analysis.
Disable/reenable other E2E when iterating
To run only your new test in CI while iterating:
- Disable other workflows — add your branch to
branches-ignorein.github/workflows/*.ymlthat havepush: branches-ignore: [main, develop](e.g.testCommitExceptMain.yml,coreE2E.yml,orgBrowserE2E.yml,lwcPlaywrightE2E.yml, etc.) - Filter target workflow — add
--grep "Your Test Title"to the test run command in the workflow you care about - Optional — skip org setup steps not needed for your test (e.g. minimal/non-tracking orgs)
- Restore — remove branch from
branches-ignore, remove--grep, uncomment skipped steps
Test Controller Native Surfaces
When testing native Test Controller surfaces (Test Explorer, Test Results panel):
- Test Results panel: Wait for tab visibility, then assert Pass Rate text (e.g.,
getByText(/Pass Rate/i)) - Tree items: Assert aria-label contains expected decoration (e.g.,
toHaveAttribute('aria-label', /Passed/i)for completed tests) - Locators: Use
TEST_RESULTS_TAB = 'a.action-label[aria-label="Test Results"]'to target panel tab reliably - Test run completion: Call
verifyNoTestRunInProgress(playwright-vscode-ext) after every Apex test run — sidebar, code lens, palette, suite, debug. Results/tree decorations/Ended …sentinel appear while TestRun still open; absence of 'Test: Cancel Test Run' command proves run ended. Sidebar (Test Explorer) runs: call before dismissing/clicking the success toast—that would end a run blocked on it, masking regressions. Palette/code lens runs have no TestRun tied to the toast, so order vs. toast doesn't matter.
Reliable Assertions for Async Operations
For desktop-only tests, prefer durable success signals over flaky UI assertions:
- Avoid:
vscode.window.showInformationMessagetoasts auto-dismiss in seconds;notification-list-itemassertions are racy - Prefer: Poll on-disk artifacts (e.g., generated files) with exponential backoff. Example:
waitForEsrFilechecksfs.accessrepeatedly until artifact appears or timeout. - Pattern: Create a helper that polls
fs.accessorfs.statwithDate.now() < deadlineloop; throw on timeout with clear error message
References
- https://playwright.dev/docs - Playwright docs
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

