From 3b93ccbfb4f1f71bbaecd1c02ac956a13394dd58 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 6 Jul 2025 17:25:32 +0900 Subject: [PATCH 01/15] test: debug flaky --- packages/plugin-rsc/playwright.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-rsc/playwright.config.ts b/packages/plugin-rsc/playwright.config.ts index 29a7d0c6..9afd7c39 100644 --- a/packages/plugin-rsc/playwright.config.ts +++ b/packages/plugin-rsc/playwright.config.ts @@ -27,7 +27,7 @@ export default defineConfig({ }, ], forbidOnly: !!process.env.CI, - retries: process.env.CI ? 2 : 0, + // retries: process.env.CI ? 2 : 0, reporter: ['list', process.env.CI && 'github'] .filter(Boolean) .map((name) => [name] as any), From 93dea397f8435128613d2370ff90603b93221adb Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Mon, 7 Jul 2025 11:36:14 +0900 Subject: [PATCH 02/15] chore: tweak trace --- packages/plugin-rsc/playwright.config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/plugin-rsc/playwright.config.ts b/packages/plugin-rsc/playwright.config.ts index 9afd7c39..b65a9467 100644 --- a/packages/plugin-rsc/playwright.config.ts +++ b/packages/plugin-rsc/playwright.config.ts @@ -3,7 +3,8 @@ import { defineConfig, devices } from '@playwright/test' export default defineConfig({ testDir: 'e2e', use: { - trace: 'on-first-retry', + // trace: 'on-first-retry', + trace: 'retain-on-failure', }, expect: { toPass: { timeout: 5000 }, From 1a551276e20684754003622817be8d1bec840331 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 12:24:20 +0900 Subject: [PATCH 03/15] test: debug --- packages/plugin-rsc/e2e/fixture.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index 7d99f99d..f9460d92 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -174,7 +174,11 @@ export async function setupIsolatedFixture(options: { throwOnError: true, nodeOptions: { cwd: options.dest, - stdio: process.env.TEST_DEBUG ? 'inherit' : undefined, + stdio: [ + 'ignore', + process.env.TEST_DEBUG ? 'inherit' : 'ignore', + 'inherit', + ], }, }) } From 224932710a64625ca1cc5d4cada6660415a7fd6f Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 12:26:09 +0900 Subject: [PATCH 04/15] test: debug --- packages/plugin-rsc/e2e/basic.test.ts | 2 +- packages/plugin-rsc/playwright.config.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index a1ef0849..95068eca 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -103,7 +103,7 @@ test.describe('build-react-compiler', () => { defineTest(f) }) -test.describe(() => { +test.describe.only(() => { // disabled by default if (!process.env.TEST_ISOLATED) return diff --git a/packages/plugin-rsc/playwright.config.ts b/packages/plugin-rsc/playwright.config.ts index 72d5f67c..64bc3dbf 100644 --- a/packages/plugin-rsc/playwright.config.ts +++ b/packages/plugin-rsc/playwright.config.ts @@ -28,7 +28,7 @@ export default defineConfig({ }, ], workers: 1, - forbidOnly: !!process.env.CI, + // forbidOnly: !!process.env.CI, // retries: process.env.CI ? 2 : 0, reporter: ['list', process.env.CI && 'github'] .filter(Boolean) From 874e6b2bcf6aa2d0c27fe295f611eaba2b54d867 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 12:30:46 +0900 Subject: [PATCH 05/15] ci: debug --- packages/plugin-rsc/e2e/basic.test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index 95068eca..5d782915 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -109,7 +109,12 @@ test.describe.only(() => { let tmpRoot = '/tmp/test-vite-rsc' test.beforeAll(async () => { - await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) + try { + await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) + } catch (e) { + console.error('[setupIsolatedFixture]', e) + throw e + } }) test.describe('dev-isolated', () => { From bcac01be36509dcf5519d4e115c843b7a56eae78 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 12:36:11 +0900 Subject: [PATCH 06/15] ci: debug --- packages/plugin-rsc/e2e/basic.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index 5d782915..1e440d9d 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -103,6 +103,8 @@ test.describe('build-react-compiler', () => { defineTest(f) }) +test.describe.configure({ mode: 'serial' }) + test.describe.only(() => { // disabled by default if (!process.env.TEST_ISOLATED) return From 45cd923dee4643da74ef54b18cf9adb9b7481907 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 12:40:06 +0900 Subject: [PATCH 07/15] ci: debug --- packages/plugin-rsc/e2e/fixture.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index f9460d92..2ef095fc 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -170,17 +170,20 @@ export async function setupIsolatedFixture(options: { }) // install + console.log('[setupIsolatedFixture] before pnpm') await x('pnpm', ['i'], { throwOnError: true, nodeOptions: { cwd: options.dest, stdio: [ 'ignore', - process.env.TEST_DEBUG ? 'inherit' : 'ignore', + // process.env.TEST_DEBUG ? 'inherit' : 'ignore', + 'inherit', 'inherit', ], }, }) + console.log('[setupIsolatedFixture] after pnpm') } function editFileJson(filepath: string, edit: (s: string) => string) { From 8f8027b2f6a2d4f49515ca7998d3413ce52c3979 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 12:43:17 +0900 Subject: [PATCH 08/15] ci: debug --- packages/plugin-rsc/e2e/fixture.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index 2ef095fc..4e7b34a5 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -171,18 +171,18 @@ export async function setupIsolatedFixture(options: { // install console.log('[setupIsolatedFixture] before pnpm') - await x('pnpm', ['i'], { - throwOnError: true, - nodeOptions: { - cwd: options.dest, - stdio: [ - 'ignore', - // process.env.TEST_DEBUG ? 'inherit' : 'ignore', - 'inherit', - 'inherit', - ], - }, - }) + // await x('pnpm', ['i'], { + // throwOnError: true, + // nodeOptions: { + // cwd: options.dest, + // stdio: [ + // 'ignore', + // // process.env.TEST_DEBUG ? 'inherit' : 'ignore', + // 'inherit', + // 'inherit', + // ], + // }, + // }) console.log('[setupIsolatedFixture] after pnpm') } From 5fd10b541ec7c72ef03c7d425b3f1c1752f29618 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 13:32:54 +0900 Subject: [PATCH 09/15] ci: debug --- .github/workflows/ci-rsc.yml | 20 +++++++++++--------- packages/plugin-rsc/e2e/basic.test.ts | 15 ++++++++------- packages/plugin-rsc/e2e/fixture.ts | 4 ++-- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci-rsc.yml b/.github/workflows/ci-rsc.yml index 19107c4d..15184b76 100644 --- a/.github/workflows/ci-rsc.yml +++ b/.github/workflows/ci-rsc.yml @@ -35,17 +35,19 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [windows-latest] browser: [chromium] + # os: [ubuntu-latest, macos-latest, windows-latest] + # browser: [chromium] rolldown: [false] - include: - - os: ubuntu-latest - browser: firefox - - os: macos-latest - browser: webkit - - os: ubuntu-latest - browser: chromium - rolldown: true + # include: + # - os: ubuntu-latest + # browser: firefox + # - os: macos-latest + # browser: webkit + # - os: ubuntu-latest + # browser: chromium + # rolldown: true fail-fast: false steps: - uses: actions/checkout@v4 diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index 7e7afbf1..6c7a7cce 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -107,16 +107,17 @@ test.describe.configure({ mode: 'serial' }) test.describe.only(() => { // disabled by default - if (process.env.TEST_ISOLATED !== 'true') return + // if (process.env.TEST_ISOLATED !== 'true') return let tmpRoot = '/tmp/test-vite-rsc' test.beforeAll(async () => { - try { - await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) - } catch (e) { - console.error('[setupIsolatedFixture]', e) - throw e - } + await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) + // try { + // await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) + // } catch (e) { + // console.error('[setupIsolatedFixture]', e) + // throw e + // } }) test.describe('dev-isolated', () => { diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index 4e7b34a5..1be4051a 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -170,7 +170,7 @@ export async function setupIsolatedFixture(options: { }) // install - console.log('[setupIsolatedFixture] before pnpm') + console.error('[setupIsolatedFixture] before pnpm') // await x('pnpm', ['i'], { // throwOnError: true, // nodeOptions: { @@ -183,7 +183,7 @@ export async function setupIsolatedFixture(options: { // ], // }, // }) - console.log('[setupIsolatedFixture] after pnpm') + console.error('[setupIsolatedFixture] after pnpm') } function editFileJson(filepath: string, edit: (s: string) => string) { From 71a63e570e69302a3916c6b60525c57d4e0b4c8c Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 13:41:00 +0900 Subject: [PATCH 10/15] test: use os.tmpdir --- packages/plugin-rsc/e2e/basic.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index 6c7a7cce..bb311f92 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -3,6 +3,8 @@ import { readFileSync } from 'node:fs' import { type Page, expect, test } from '@playwright/test' import { type Fixture, setupIsolatedFixture, useFixture } from './fixture' import { expectNoReload, testNoJs, waitForHydration } from './helper' +import os from 'node:os' +import path from 'node:path' // TODO: parallel? // TODO: all tests don't need to be tested in all variants? @@ -109,7 +111,7 @@ test.describe.only(() => { // disabled by default // if (process.env.TEST_ISOLATED !== 'true') return - let tmpRoot = '/tmp/test-vite-rsc' + let tmpRoot = path.join(os.tmpdir(), 'test-vite-rsc') test.beforeAll(async () => { await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) // try { From d95b07972889e0785f8f846ab4770e862cfbe256 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 13:46:31 +0900 Subject: [PATCH 11/15] ci: debug --- packages/plugin-rsc/e2e/basic.test.ts | 1 + packages/plugin-rsc/e2e/fixture.ts | 27 +++++++++++++++------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index bb311f92..2d6ff2d1 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -113,6 +113,7 @@ test.describe.only(() => { let tmpRoot = path.join(os.tmpdir(), 'test-vite-rsc') test.beforeAll(async () => { + console.error('[beforeAll]') await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) // try { // await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index 1be4051a..5bfc1d47 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -151,6 +151,7 @@ export async function setupIsolatedFixture(options: { src: string dest: string }) { + console.error('[setupIsolatedFixture]') // copy fixture fs.rmSync(options.dest, { recursive: true, force: true }) fs.cpSync(options.src, options.dest, { recursive: true }) @@ -159,6 +160,8 @@ export async function setupIsolatedFixture(options: { force: true, }) + console.error('[setupIsolatedFixture] copy done') + // setup package.json overrides const packagesDir = path.join(import.meta.dirname, '..', '..') const overrides = { @@ -171,18 +174,18 @@ export async function setupIsolatedFixture(options: { // install console.error('[setupIsolatedFixture] before pnpm') - // await x('pnpm', ['i'], { - // throwOnError: true, - // nodeOptions: { - // cwd: options.dest, - // stdio: [ - // 'ignore', - // // process.env.TEST_DEBUG ? 'inherit' : 'ignore', - // 'inherit', - // 'inherit', - // ], - // }, - // }) + await x('pnpm', ['i'], { + throwOnError: true, + nodeOptions: { + cwd: options.dest, + stdio: [ + 'ignore', + // process.env.TEST_DEBUG ? 'inherit' : 'ignore', + 'inherit', + 'inherit', + ], + }, + }) console.error('[setupIsolatedFixture] after pnpm') } From c731ada1fc9ce322384aca85e0f04d3595224f0c Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 13:49:01 +0900 Subject: [PATCH 12/15] ci: debug --- packages/plugin-rsc/e2e/fixture.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index 5bfc1d47..f774f015 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -153,14 +153,16 @@ export async function setupIsolatedFixture(options: { }) { console.error('[setupIsolatedFixture]') // copy fixture + console.error('[setupIsolatedFixture] rmSync', options.dest) fs.rmSync(options.dest, { recursive: true, force: true }) + console.error('[setupIsolatedFixture] cpSync', options.src, options.dest) fs.cpSync(options.src, options.dest, { recursive: true }) + console.error('[setupIsolatedFixture] cp done') fs.rmSync(path.join(options.dest, 'node_modules'), { recursive: true, force: true, }) - - console.error('[setupIsolatedFixture] copy done') + console.error('[setupIsolatedFixture] rm node_modules done') // setup package.json overrides const packagesDir = path.join(import.meta.dirname, '..', '..') From e99fedd4a6de1a860415f63a96c49ffbe0832a19 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 13:57:28 +0900 Subject: [PATCH 13/15] ci: use RUNNER_TEMP --- packages/plugin-rsc/e2e/basic.test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index 2d6ff2d1..cb76df46 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -111,7 +111,12 @@ test.describe.only(() => { // disabled by default // if (process.env.TEST_ISOLATED !== 'true') return - let tmpRoot = path.join(os.tmpdir(), 'test-vite-rsc') + // RUNNER_TEMP is for Github Actions + // https://github.com/actions/toolkit/issues/518 + const tmpRoot = path.join( + process.env['RUNNER_TEMP'] || os.tmpdir(), + 'test-vite-rsc', + ) test.beforeAll(async () => { console.error('[beforeAll]') await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) From 249e5c16e4bb979df298e5c6c1f2520d3622cd3d Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 14:03:56 +0900 Subject: [PATCH 14/15] ci: skip cp node_modules --- packages/plugin-rsc/e2e/basic.test.ts | 2 +- packages/plugin-rsc/e2e/fixture.ts | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index cb76df46..30d4b828 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -111,7 +111,7 @@ test.describe.only(() => { // disabled by default // if (process.env.TEST_ISOLATED !== 'true') return - // RUNNER_TEMP is for Github Actions + // use RUNNER_TEMP on Github Actions // https://github.com/actions/toolkit/issues/518 const tmpRoot = path.join( process.env['RUNNER_TEMP'] || os.tmpdir(), diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index f774f015..ab58f8a7 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -156,13 +156,11 @@ export async function setupIsolatedFixture(options: { console.error('[setupIsolatedFixture] rmSync', options.dest) fs.rmSync(options.dest, { recursive: true, force: true }) console.error('[setupIsolatedFixture] cpSync', options.src, options.dest) - fs.cpSync(options.src, options.dest, { recursive: true }) - console.error('[setupIsolatedFixture] cp done') - fs.rmSync(path.join(options.dest, 'node_modules'), { + fs.cpSync(options.src, options.dest, { recursive: true, - force: true, + filter: (src) => !src.includes('node_modules'), }) - console.error('[setupIsolatedFixture] rm node_modules done') + console.error('[setupIsolatedFixture] cp done') // setup package.json overrides const packagesDir = path.join(import.meta.dirname, '..', '..') From 2c665977386dae3ba3342a10b1f4e9ad3c8d7863 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Jul 2025 14:11:05 +0900 Subject: [PATCH 15/15] test: cleanup --- packages/plugin-rsc/e2e/basic.test.ts | 7 ------- packages/plugin-rsc/e2e/fixture.ts | 9 +-------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/packages/plugin-rsc/e2e/basic.test.ts b/packages/plugin-rsc/e2e/basic.test.ts index 30d4b828..5b70b48e 100644 --- a/packages/plugin-rsc/e2e/basic.test.ts +++ b/packages/plugin-rsc/e2e/basic.test.ts @@ -118,14 +118,7 @@ test.describe.only(() => { 'test-vite-rsc', ) test.beforeAll(async () => { - console.error('[beforeAll]') await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) - // try { - // await setupIsolatedFixture({ src: 'examples/basic', dest: tmpRoot }) - // } catch (e) { - // console.error('[setupIsolatedFixture]', e) - // throw e - // } }) test.describe('dev-isolated', () => { diff --git a/packages/plugin-rsc/e2e/fixture.ts b/packages/plugin-rsc/e2e/fixture.ts index ab58f8a7..b9cf2f07 100644 --- a/packages/plugin-rsc/e2e/fixture.ts +++ b/packages/plugin-rsc/e2e/fixture.ts @@ -151,16 +151,12 @@ export async function setupIsolatedFixture(options: { src: string dest: string }) { - console.error('[setupIsolatedFixture]') // copy fixture - console.error('[setupIsolatedFixture] rmSync', options.dest) fs.rmSync(options.dest, { recursive: true, force: true }) - console.error('[setupIsolatedFixture] cpSync', options.src, options.dest) fs.cpSync(options.src, options.dest, { recursive: true, filter: (src) => !src.includes('node_modules'), }) - console.error('[setupIsolatedFixture] cp done') // setup package.json overrides const packagesDir = path.join(import.meta.dirname, '..', '..') @@ -173,20 +169,17 @@ export async function setupIsolatedFixture(options: { }) // install - console.error('[setupIsolatedFixture] before pnpm') await x('pnpm', ['i'], { throwOnError: true, nodeOptions: { cwd: options.dest, stdio: [ 'ignore', - // process.env.TEST_DEBUG ? 'inherit' : 'ignore', - 'inherit', + process.env.TEST_DEBUG ? 'inherit' : 'ignore', 'inherit', ], }, }) - console.error('[setupIsolatedFixture] after pnpm') } function editFileJson(filepath: string, edit: (s: string) => string) {