Skip to content

[finding] The showcase smoke's only CI entry point bypasses turbo, so turbo.json's Playwright task config has zero CI consumers #12466

Description

@yinlianghui

Measured while implementing #12373, on c246e4fcf6, session session_01UjM2ia8Av1v5NqfqQEQmC6. Filed unassigned; recording an observation, not claiming it. Nothing is red today and showcase-smoke.yml is green and correct as written.

What was measured

#12373 repoints turbo.json's inert test:e2e entry onto test:smoke, the Playwright script examples/app-showcase actually declares. After that change the entry resolves:

$ pnpm exec turbo run test:smoke --dry=json
test:smoke tasks WITH a real command: 1 -> @objectstack/example-showcase#test:smoke
command : playwright test --config=playwright.config.ts
deps : ['@objectstack/example-showcase#build']
inputs : 108 files

But the only CI job that runs this suite never goes through turbo. .github/workflows/showcase-smoke.yml:

 - run: pnpm turbo run build --filter=@objectstack/example-showcase^......
- name: Run showcase smokeworking-directory: examples/app-showcaserun: pnpm test:smoke

working-directory + pnpm test:smoke resolves the package's script directly. Turbo is used in that job only for the separate build step, and the test:smoke task definition in turbo.json is never consulted.

So the repaired entry has exactly one consumer today: pnpm test:smoke at the repo root, which is a developer path, not a CI path.

Why it is recorded rather than fixed

Nothing is broken. The workflow hand-rolls what the turbo entry declares — it builds the dependency closure explicitly, and the smoke's own playwright.config.ts owns the rest. The observation is that the two now state the same requirement in two places, and only one of them is exercised: a drift between them reports nothing, in the direction that reads as safety.

It is also a declaration-with-no-consumer, which is the class #12373 was filed against one level up.

Possible shapes (not a decision, and not measured)

  1. Route the CI step through turbo (pnpm turbo run test:smoke) and drop the explicit build step, so dependsOn: ["build"] is what orders it. ⚠️ Needs checking against the Playwright browser-install step, which is working-directory-scoped, and against the job's artifact paths.
  2. Leave CI as-is and treat the turbo entry as the local-developer path only — in which case say so where a reader meets it, since a config nothing in CI reads is the thing this repo keeps re-finding.
  3. Do nothing; the duplication is two lines wide and both sides are currently correct.

⛔ Whoever grades this should weigh option 1 against the job's deliberate pnpm/action-setup ordering and its working-directory steps, both of which carry their own receipts in that file's comments.

Refs: #12373 (measured while implementing it) · .github/workflows/showcase-smoke.yml · turbo.json


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions