From ec1cc5613dbbaef14f655e205151058a501de678 Mon Sep 17 00:00:00 2001 From: Ryan Bahan Date: Thu, 26 Feb 2026 18:22:22 -0700 Subject: [PATCH] add app dev tests --- packages/e2e/tests/app-dev-server.spec.ts | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 packages/e2e/tests/app-dev-server.spec.ts diff --git a/packages/e2e/tests/app-dev-server.spec.ts b/packages/e2e/tests/app-dev-server.spec.ts new file mode 100644 index 0000000000..dca4c7d649 --- /dev/null +++ b/packages/e2e/tests/app-dev-server.spec.ts @@ -0,0 +1,41 @@ +import {appScaffoldFixture as test} from '../fixtures/app-scaffold.js' +import {requireEnv} from '../fixtures/env.js' +import {expect} from '@playwright/test' + +test.describe('App dev server @phase2', () => { + test('dev starts, shows ready message, and quits with q', async ({appScaffold, cli, env}) => { + requireEnv(env, 'partnersToken', 'clientId', 'storeFqdn') + + // Step 1: Create an app + const initResult = await appScaffold.init({ + template: 'reactRouter', + flavor: 'javascript', + packageManager: 'npm', + }) + expect(initResult.exitCode).toBe(0) + + // Step 2: Start dev server via PTY + // Unset CI so keyboard shortcuts are enabled in the Dev UI + const dev = await cli.spawn( + [ + 'app', 'dev', + '--path', appScaffold.appDir, + ], + {env: {CI: ''}}, + ) + + // Step 3: Wait for the ready message + await dev.waitForOutput('Ready, watching for changes in your app', 3 * 60 * 1000) + + // Step 4: Verify keyboard shortcuts are shown (indicates TTY mode is working) + const output = dev.getOutput() + expect(output).toContain('q') + + // Step 5: Press q to quit + dev.sendKey('q') + + // Step 6: Wait for clean exit + const exitCode = await dev.waitForExit(30_000) + expect(exitCode).toBe(0) + }) +})