Skip to content

Latest commit

 

History

History
81 lines (55 loc) · 4.66 KB

File metadata and controls

81 lines (55 loc) · 4.66 KB

E2E Silent-Pass Case Studies

These are self-selected, real merged upstream PRs found while reviewing Playwright/Cypress suites with e2e-skills/e2e-reviewer. They provide adoption and concrete case evidence, not a representative validation sample or an accuracy estimate. The common pattern: CI was green, but the test either asserted nothing, skipped the assertion, or checked a value that could never fail.

Carbon Design System: locator truthiness did not prove progress state

- expect(page.locator('.cds--progress-step--complete')).toBeTruthy();
+ await expect(page.locator('.cds--progress-step--complete')).toBeVisible();

Why it matters: page.locator() returns a Locator handle even when no matching element is visible. The fixed assertion waits for user-visible progress state.

Storybook: unawaited actions and discarded checks

Why it matters: Playwright promises must be awaited, and boolean reads do not become assertions unless their result is asserted.

code-server: focused test leak and non-asserting checks

Why it matters: focused-test leaks silently remove coverage from CI, while matcher-less expect() calls create false confidence.

SvelteKit: floating web-first assertions

- expect(page).toHaveURL(expectedUrl);
+ await expect(page).toHaveURL(expectedUrl);

Why it matters: a missing await leaves the assertion Promise unsequenced. Current Playwright workers normally surface a rejection, but attribution is degraded and a resolving assertion can race later work.

Strapi: discarded boolean reads

Why it matters: reading a boolean is not a test assertion. The fixed tests assert user-visible state with awaited matchers.

Ghost: async disabled-state checks always passed

  • Repo: TryGhost/Ghost
  • PR: TryGhost/Ghost#28712 — merged
  • Pattern: expect(likeButton.isDisabled()).toBeTruthy() checked a promise-like value instead of the button state.

Why it matters: Promise-valued state checks need await or a web-first assertion; otherwise a truthy Promise object can be asserted instead of the disabled state.

Cal.com: weak assertions and hard waits

Why it matters: replacing hard waits with web-first assertions makes tests fail on real regressions instead of timing artifacts.

More merged examples