Skip to content

Commit 97a2e87

Browse files
fix(ci): restore concurrent test execution to improve ETE test performance (#14885)
* fix(ci): restore concurrent test execution to improve ETE test performance Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(ci): re-enable limited file parallelism for ETE tests Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 0e43092 commit 97a2e87

5 files changed

Lines changed: 24 additions & 22 deletions

File tree

packages/cli/ete-tests/src/tests/generate/fernignore.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Practice schema-first API design with Fern
2828

2929
describe("fern generate --local", () => {
3030
// eslint-disable-next-line jest/expect-expect
31-
it("Keep files listed in .fernignore from unmodified", async ({ signal }) => {
31+
it.concurrent("Keep files listed in .fernignore from unmodified", async ({ signal }) => {
3232
const pathOfDirectory = await init({ signal });
3333
await runFernCli(["generate", "--local", "--keepDocker"], { cwd: pathOfDirectory, signal });
3434

@@ -55,7 +55,7 @@ describe("fern generate --local", () => {
5555
}, 360_000);
5656

5757
// eslint-disable-next-line jest/expect-expect
58-
it("Prevent initial generation of files listed in .fernignore", async ({ signal }) => {
58+
it.concurrent("Prevent initial generation of files listed in .fernignore", async ({ signal }) => {
5959
const pathOfDirectory = await init({ signal });
6060

6161
// Create output directory with .fernignore BEFORE first generation

packages/cli/ete-tests/src/tests/generate/generate-with-settings.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import tmp from "tmp-promise";
55
import { runFernCli } from "../../utils/runFernCli.js";
66

77
describe("fern generate with settings", () => {
8-
it("single api", async ({ expect, signal }) => {
8+
it.concurrent("single api", async ({ expect, signal }) => {
99
const fixturesDir = join(AbsoluteFilePath.of(__dirname), RelativeFilePath.of("fixtures/api-settings"));
1010

1111
const tmpDir = await tmp.dir();
@@ -20,7 +20,7 @@ describe("fern generate with settings", () => {
2020
).toMatchSnapshot();
2121
}, 180_000);
2222

23-
it("dependencies-based api", async ({ expect, signal }) => {
23+
it.concurrent("dependencies-based api", async ({ expect, signal }) => {
2424
const fixturesDir = join(AbsoluteFilePath.of(__dirname), RelativeFilePath.of("fixtures/api-settings-unioned"));
2525
const tmpDir = await tmp.dir();
2626
const directory = AbsoluteFilePath.of(tmpDir.path);

packages/cli/ete-tests/src/tests/generate/generate.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { init } from "../init/init.js";
88
const fixturesDir = join(AbsoluteFilePath.of(__dirname), RelativeFilePath.of("fixtures"));
99

1010
describe("fern generate", () => {
11-
it("default api (fern init)", async ({ signal }) => {
11+
it.concurrent("default api (fern init)", async ({ signal }) => {
1212
const pathOfDirectory = await init({ signal });
1313

1414
await runFernCli(["generate", "--local", "--keepDocker"], {
@@ -19,7 +19,7 @@ describe("fern generate", () => {
1919
expect(await doesPathExist(join(pathOfDirectory, RelativeFilePath.of("sdks/typescript")))).toBe(true);
2020
}, 180_000);
2121

22-
it("ir contains fdr definitionid", async ({ signal }) => {
22+
it.concurrent("ir contains fdr definitionid", async ({ signal }) => {
2323
if (globalThis.process.env.FERN_ORG_TOKEN_DEV == null) {
2424
throw new Error("FERN_ORG_TOKEN_DEV is not set");
2525
}
@@ -68,7 +68,7 @@ describe("fern generate", () => {
6868
).toMatchSnapshot();
6969
}, 180_000);
7070

71-
it("generate docs with no auth requires login", async ({ signal }) => {
71+
it.concurrent("generate docs with no auth requires login", async ({ signal }) => {
7272
const { stdout, stderr } = await runFernCli(["generate", "--docs", "--no-prompt"], {
7373
cwd: join(fixturesDir, RelativeFilePath.of("docs")),
7474
reject: false,
@@ -84,7 +84,7 @@ describe("fern generate", () => {
8484
);
8585
}, 180_000);
8686

87-
it("generate docs with FDR origin override and token succeeds", async ({ signal }) => {
87+
it.concurrent("generate docs with FDR origin override and token succeeds", async ({ signal }) => {
8888
const { stdout } = await runFernCli(["generate", "--docs", "--no-prompt"], {
8989
cwd: join(fixturesDir, RelativeFilePath.of("docs")),
9090
reject: false,
@@ -98,7 +98,7 @@ describe("fern generate", () => {
9898
expect(stdout).toContain("ferndevtest.docs.dev.buildwithfern.com Started.");
9999
}, 180_000);
100100

101-
it("generate docs with no docs.yml file fails", async ({ signal }) => {
101+
it.concurrent("generate docs with no docs.yml file fails", async ({ signal }) => {
102102
const { stdout } = await runFernCli(["generate", "--docs"], {
103103
cwd: join(fixturesDir, RelativeFilePath.of("basic")),
104104
reject: false,
@@ -107,7 +107,7 @@ describe("fern generate", () => {
107107
expect(stdout).toContain("No docs.yml file found. Please make sure your project has one.");
108108
}, 180_000);
109109

110-
it("lists available groups when no group specified", async ({ signal }) => {
110+
it.concurrent("lists available groups when no group specified", async ({ signal }) => {
111111
const { stdout, failed } = await runFernCli(["generate", "--local"], {
112112
cwd: join(fixturesDir, RelativeFilePath.of("no-default-group")),
113113
reject: false,

packages/cli/ete-tests/src/tests/upgrade-generator/upgrade-generator.test.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { runFernCli } from "../../utils/runFernCli.js";
1010
const FIXTURES_DIR = path.join(__dirname, "fixtures");
1111

1212
describe("fern generator upgrade", () => {
13-
it("fern generator upgrade", async ({ signal }) => {
13+
it.concurrent("fern generator upgrade", async ({ signal }) => {
1414
// Create tmpdir and copy contents
1515
const tmpDir = await tmp.dir();
1616
const directory = AbsoluteFilePath.of(tmpDir.path);
@@ -38,7 +38,7 @@ describe("fern generator upgrade", () => {
3838
expect(JSON.parse((await readFile(outputFile)).toString()).version).not.toEqual("2.0.0");
3939
}, 180_000);
4040

41-
it("fern generator upgrade with filters", async ({ signal }) => {
41+
it.concurrent("fern generator upgrade with filters", async ({ signal }) => {
4242
// Create tmpdir and copy contents
4343
const tmpDir = await tmp.dir();
4444
const directory = AbsoluteFilePath.of(tmpDir.path);
@@ -93,7 +93,7 @@ describe("fern generator upgrade", () => {
9393
).toMatchSnapshot();
9494
}, 180_000);
9595

96-
it("fern generator upgrade majors", async ({ signal }) => {
96+
it.concurrent("fern generator upgrade majors", async ({ signal }) => {
9797
// Create tmpdir and copy contents
9898
const tmpDir = await tmp.dir();
9999
const directory = AbsoluteFilePath.of(tmpDir.path);
@@ -183,7 +183,9 @@ describe("fern generator upgrade", () => {
183183
).toMatchSnapshot();
184184
}, 180_000);
185185

186-
it("fern generator upgrade --skip-autorelease-disabled skips autorelease false generators", async ({ signal }) => {
186+
it.concurrent("fern generator upgrade --skip-autorelease-disabled skips autorelease false generators", async ({
187+
signal
188+
}) => {
187189
const tmpDir = await tmp.dir();
188190
const directory = AbsoluteFilePath.of(tmpDir.path);
189191

@@ -242,7 +244,9 @@ describe("fern generator upgrade", () => {
242244
expect(JSON.parse((await readFile(outputFileJava)).toString()).version).not.toEqual("0.0.1");
243245
}, 180_000);
244246

245-
it("fern generator upgrade without --skip-autorelease-disabled upgrades all generators", async ({ signal }) => {
247+
it.concurrent("fern generator upgrade without --skip-autorelease-disabled upgrades all generators", async ({
248+
signal
249+
}) => {
246250
const tmpDir = await tmp.dir();
247251
const directory = AbsoluteFilePath.of(tmpDir.path);
248252

@@ -272,7 +276,7 @@ describe("fern generator upgrade", () => {
272276
expect(JSON.parse((await readFile(outputFile)).toString()).version).not.toEqual("2.0.0");
273277
}, 180_000);
274278

275-
it("fern generator upgrade shows major version message", async ({ signal }) => {
279+
it.concurrent("fern generator upgrade shows major version message", async ({ signal }) => {
276280
const tmpDir = await tmp.dir();
277281
const directory = AbsoluteFilePath.of(tmpDir.path);
278282

packages/cli/ete-tests/vitest.config.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@ export default defineConfig(
44
mergeConfig(defaultConfig, {
55
test: {
66
// ETE tests spawn heavy child processes (Node CLI, Docker containers).
7-
// Running too many test files in parallel causes resource contention
8-
// and widespread timeouts on CI runners.
9-
fileParallelism: false,
10-
maxConcurrency: 3,
7+
// Limit parallelism to avoid resource contention on CI runners.
8+
maxConcurrency: 5,
119
poolOptions: {
1210
threads: {
13-
maxThreads: 2
11+
maxThreads: 3
1412
},
1513
forks: {
16-
maxForks: 2
14+
maxForks: 3
1715
}
1816
}
1917
}

0 commit comments

Comments
 (0)