From c3e5995a3c0cfd807910cd0016d253482c336060 Mon Sep 17 00:00:00 2001 From: Phyllis Wu Date: Thu, 19 Mar 2026 10:49:17 -0400 Subject: [PATCH 1/2] QA to E2E: hydrogen --- packages/e2e/tests/hydrogen.spec.ts | 66 +++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 packages/e2e/tests/hydrogen.spec.ts diff --git a/packages/e2e/tests/hydrogen.spec.ts b/packages/e2e/tests/hydrogen.spec.ts new file mode 100644 index 0000000000..6ef617fab8 --- /dev/null +++ b/packages/e2e/tests/hydrogen.spec.ts @@ -0,0 +1,66 @@ +import {cliFixture as test} from '../setup/cli.js' +import {expect} from '@playwright/test' +import * as path from 'path' + +test.describe('Hydrogen basic flow (mock shop)', () => { + test('init, build, dev', async ({cli, env}) => { + // No store credentials needed — uses mock.shop as data source + test.setTimeout(10 * 60 * 1000) + + const hydrogenDir = path.join(env.tempDir, 'hydrogen-app') + + // Step 1: Scaffold and install dependencies via hydrogen init. + // Force npm by overriding npm_config_user_agent (otherwise pnpm is detected + // from the monorepo environment and used to install deps in the temp project). + const initResult = await cli.exec( + [ + 'hydrogen', + 'init', + '--path', + hydrogenDir, + '--mock-shop', + '--language', + 'js', + '--markets', + 'none', + '--no-shortcut', + '--no-git', + '--install-deps', + '--styling', + 'tailwind', + ], + { + env: {npm_config_user_agent: 'npm'}, + timeout: 5 * 60 * 1000, + }, + ) + const initOutput = initResult.stdout + initResult.stderr + + // console.log('[e2e] hydrogen init output:\n', initOutput) + + expect(initResult.exitCode, `hydrogen init failed:\n${initOutput}`).toBe(0) + expect(initOutput).toContain('Storefront setup complete!') + expect(initOutput).toContain('Mock.shop') + + // Step 2: Build for production + const buildResult = await cli.exec(['hydrogen', 'build', '--path', hydrogenDir], { + timeout: 3 * 60 * 1000, + }) + const buildOutput = buildResult.stdout + buildResult.stderr + expect(buildResult.exitCode, `hydrogen build failed:\n${buildOutput}`).toBe(0) + + // Step 3: Start dev server and verify it serves requests + const port = 14712 // fixed port to avoid conflicts + const dev = await cli.spawn(['hydrogen', 'dev', '--path', hydrogenDir, '--port', String(port)], { + env: {CI: ''}, + }) + try { + await dev.waitForOutput('View Hydrogen app:', 3 * 60 * 1000) + + const response = await fetch(`http://localhost:${port}/`) + expect(response.status, `hydrogen dev server returned unexpected status`).toBe(200) + } finally { + dev.kill() + } + }) +}) From d51947065de0699cdaf9642b51a220de13267625 Mon Sep 17 00:00:00 2001 From: Phyllis Wu Date: Thu, 19 Mar 2026 13:35:08 -0400 Subject: [PATCH 2/2] fix lint issues --- packages/e2e/setup/auth.ts | 1 - packages/e2e/tests/hydrogen.spec.ts | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/e2e/setup/auth.ts b/packages/e2e/setup/auth.ts index 5a37752bef..3bb1e9cf0c 100644 --- a/packages/e2e/setup/auth.ts +++ b/packages/e2e/setup/auth.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-restricted-imports */ import {cliFixture} from './cli.js' import {executables} from './env.js' import {stripAnsi} from '../helpers/strip-ansi.js' diff --git a/packages/e2e/tests/hydrogen.spec.ts b/packages/e2e/tests/hydrogen.spec.ts index 6ef617fab8..8ea22bcdf1 100644 --- a/packages/e2e/tests/hydrogen.spec.ts +++ b/packages/e2e/tests/hydrogen.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-restricted-imports */ import {cliFixture as test} from '../setup/cli.js' import {expect} from '@playwright/test' import * as path from 'path' @@ -35,9 +36,6 @@ test.describe('Hydrogen basic flow (mock shop)', () => { }, ) const initOutput = initResult.stdout + initResult.stderr - - // console.log('[e2e] hydrogen init output:\n', initOutput) - expect(initResult.exitCode, `hydrogen init failed:\n${initOutput}`).toBe(0) expect(initOutput).toContain('Storefront setup complete!') expect(initOutput).toContain('Mock.shop') @@ -50,13 +48,15 @@ test.describe('Hydrogen basic flow (mock shop)', () => { expect(buildResult.exitCode, `hydrogen build failed:\n${buildOutput}`).toBe(0) // Step 3: Start dev server and verify it serves requests - const port = 14712 // fixed port to avoid conflicts + // fixed port to avoid conflicts + const port = 14712 const dev = await cli.spawn(['hydrogen', 'dev', '--path', hydrogenDir, '--port', String(port)], { env: {CI: ''}, }) try { await dev.waitForOutput('View Hydrogen app:', 3 * 60 * 1000) + // eslint-disable-next-line no-restricted-globals const response = await fetch(`http://localhost:${port}/`) expect(response.status, `hydrogen dev server returned unexpected status`).toBe(200) } finally {