QA to E2E: app basic flow (no extensions)#7047
Conversation
Coverage report
Test suite run success3924 tests passing in 1510 suites. Report generated by 🧪jest coverage report action from eaad57b |
b215880 to
f3e68db
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new Playwright end-to-end test in packages/e2e to automate the “basic app lifecycle” QA flow (init → dev → execute → quit → dev clean → deploy → versions → config link → deploy via secondary config), plus supporting fixture and dependency updates to make the flow reliable in CI.
Changes:
- Introduces
app-basic.spec.tsto cover the full app workflow including secondary config link + deploy. - Updates the e2e CLI fixture to avoid inheriting the parent shell environment (
extendEnv: false). - Adds a
@shopify/cli-kitdevDependency topackages/e2eto supportjoinPathusage.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Lockfile updates for the new @shopify/cli-kit devDependency and resulting dependency graph changes. |
| packages/e2e/tests/app-basic.spec.ts | New end-to-end “basic flow” test including config link + secondary deploy. |
| packages/e2e/setup/cli.ts | Adjusts execa options to prevent env leakage by disabling env extension. |
| packages/e2e/setup/auth.ts | Adds a console log indicating automatic authentication. |
| packages/e2e/setup/app.ts | Avoids parsing scaffold output when create-app exits non-zero (returns early). |
| packages/e2e/package.json | Adds @shopify/cli-kit devDependency needed by the new test. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
dmerand
left a comment
There was a problem hiding this comment.
I'm aligned with the overall approach. Agent review found a few bugs worth checking.
Review assisted by pair-review
1457cd0 to
a4af128
Compare
a4af128 to
eaad57b
Compare

WHY are these changes introduced?
To replace manual CLI QA with automated end-to-end tests that validate the complete app development workflow in a real environment.
This is part of Vault project #gsd:49408 to automate CLI QA coverage.
WHAT is this pull request doing?
Adds
tests/app-basic.spec.ts: a full lifecycle e2e test covering 9 steps:app initapp devCI='')app executeqkeyqkeystroke to terminate the dev serverapp dev cleanapp deployapp versions list --jsonapp config link --client-id <secondary>shopify.app.secondary.tomlstub (client_id = "...") before spawning, sogetTomls()finds the secondary client ID andloadConfigurationFileNamereturns the filename immediately without triggering the interactive "Configuration file name:" promptapp deploy --config secondarySHOPIFY_FLAG_CLIENT_IDunset to avoid the--config/--client-idmutual exclusion enforced by oclifSupporting changes:
setup/cli.ts: addsextendEnv: falsetoexecandexecCreateAppso the test's explicitprocessEnvis the complete environment — no leakage from the parent shellsetup/auth.ts: logs "Authenticating automatically" for both the browser OAuth path and the partners-token path (was missing from the token path)package.json: adds@shopify/cli-kit: 3.92.0as a devDependency (required for thejoinPathimport, pinned to match all other packages per the repo-health version sync check)Divergence from the manual flow
In the manual flow:
app initcreates a new app (you pick org, name a new app)app devlinks to that new appapp deploydeploys to that new appIn the e2e test:
app initscaffolds the local directory but links to a pre-existing app viaSHOPIFY_FLAG_CLIENT_IDWhy the test does it this way:
client_idskips all that interactivityThe tradeoff:
app initHow to test your changes?
Running the test
.envwithSHOPIFY_FLAG_CLIENT_ID(primary test app),E2E_STORE_FQDN,E2E_SECONDARY_CLIENT_ID(secondary test app).write_productVerifying each step catches failures
pnpm nx build app --skip-nx-cache && pnpm nx build cli --skip-nx-cache‼️ Step N - <command> failedpnpm nx build app --skip-nx-cache && pnpm nx build cli --skip-nx-cacheapp initapp devapp executeqkeyapp dev cleanshopify app deploy --version v1app versions list --jsonapp config link --client-id <secondary>app deploy --config secondaryMeasuring impact
Checklist
Screenshots
Expand to see comparison of manual vs. automated flow
Step 1:
shopify app initStep 2:
shopify app devStep 3:
shopify app executeStep 4: Quit -
qStep 5:
shopify app dev cleanStep 6:
shopify app deploy --version v1Step 7:
shopify app versions list --jsonStep 8:
app config linkStep 9:
shopify app deploy