Skip to content

Commit 5c25e56

Browse files
authored
test(e2e): improve inline enum test case (#6065)
1 parent 61c16ef commit 5c25e56

File tree

6 files changed

+70
-36
lines changed

6 files changed

+70
-36
lines changed

e2e/cases/optimization/inline-const/index.test.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ rspackOnlyTest(
88
cwd: __dirname,
99
page,
1010
});
11-
await page.waitForFunction(() => window.test3);
12-
expect(await page.evaluate(() => window.test1)).toBe('fish,FISH');
13-
expect(await page.evaluate(() => window.test2)).toBe('cat,CAT');
14-
expect(await page.evaluate(() => window.test3)).toBe('dog,DOG');
11+
await page.waitForFunction(() => window.testDog);
12+
expect(await page.evaluate(() => window.testFish)).toBe('fish,FISH');
13+
expect(await page.evaluate(() => window.testCat)).toBe('cat,CAT');
14+
expect(await page.evaluate(() => window.testDog)).toBe('dog,DOG');
1515

1616
const indexJs = await rsbuild.getIndexBundle();
17-
expect(indexJs).toContain('window.test1="fish,FISH"');
18-
expect(indexJs).toContain('window.test2="cat,CAT"');
17+
expect(indexJs).toContain('window.testFish="fish,FISH"');
18+
expect(indexJs).toContain('window.testCat="cat,CAT"');
1919

2020
await rsbuild.close();
2121
},
@@ -28,9 +28,9 @@ test('should import the constants as expected in development mode', async ({
2828
cwd: __dirname,
2929
page,
3030
});
31-
await page.waitForFunction(() => window.test3);
32-
expect(await page.evaluate(() => window.test1)).toBe('fish,FISH');
33-
expect(await page.evaluate(() => window.test2)).toBe('cat,CAT');
34-
expect(await page.evaluate(() => window.test3)).toBe('dog,DOG');
31+
await page.waitForFunction(() => window.testDog);
32+
expect(await page.evaluate(() => window.testFish)).toBe('fish,FISH');
33+
expect(await page.evaluate(() => window.testCat)).toBe('cat,CAT');
34+
expect(await page.evaluate(() => window.testDog)).toBe('dog,DOG');
3535
await rsbuild.close();
3636
});

e2e/cases/optimization/inline-const/src/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import { CAT, FISH } from './constants';
22

33
declare global {
44
interface Window {
5-
test1: string;
6-
test2: string;
7-
test3: string;
5+
testFish: string;
6+
testCat: string;
7+
testDog: string;
88
}
99
}
1010

11-
window.test1 = `${FISH},${FISH.toUpperCase()}`;
12-
window.test2 = `${CAT},${CAT.toUpperCase()}`;
11+
window.testFish = `${FISH},${FISH.toUpperCase()}`;
12+
window.testCat = `${CAT},${CAT.toUpperCase()}`;
1313

1414
import('./constants2').then(({ DOG }) => {
15-
window.test3 = `${DOG},${DOG.toUpperCase()}`;
15+
window.testDog = `${DOG},${DOG.toUpperCase()}`;
1616
});
Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,42 @@
1-
import { build } from '@e2e/helper';
1+
import { build, dev, rspackOnlyTest } from '@e2e/helper';
22
import { expect, test } from '@playwright/test';
33

4-
test('should compile const enum correctly', async ({ page }) => {
5-
await build({
4+
rspackOnlyTest(
5+
'should inline the enum values in production mode',
6+
async ({ page }) => {
7+
const rsbuild = await build({
8+
cwd: __dirname,
9+
page,
10+
});
11+
12+
await page.waitForFunction(() => window.testDog);
13+
expect(await page.evaluate(() => window.testFish)).toBe('fish,FISH');
14+
expect(await page.evaluate(() => window.testCat)).toBe('cat,CAT');
15+
expect(await page.evaluate(() => window.testDog)).toBe('dog,DOG');
16+
expect(await page.evaluate(() => window.testNumbers)).toBe('0,1,1.0');
17+
18+
const indexJs = await rsbuild.getIndexBundle();
19+
expect(indexJs).toContain('window.testFish="fish,FISH"');
20+
expect(indexJs).toContain('window.testCat="cat,CAT"');
21+
expect(indexJs).toContain('window.testNumbers="0,1,1.0"');
22+
23+
await rsbuild.close();
24+
},
25+
);
26+
27+
test('should import the enum values as expected in development mode', async ({
28+
page,
29+
}) => {
30+
const rsbuild = await dev({
631
cwd: __dirname,
732
page,
833
});
9-
expect(await page.evaluate(() => window.test1)).toBe('Fish fish, Cat cat');
10-
expect(await page.evaluate(() => window.test2)).toBe('Fish 0, Cat 1');
1134

12-
// https://github.com/web-infra-dev/rsbuild/issues/5959
13-
expect(await page.evaluate(() => window.test3)).toBe('Fish FISH, Cat CAT');
14-
expect(await page.evaluate(() => window.test4)).toBe('Fish 0, Cat 1');
35+
await page.waitForFunction(() => window.testDog);
36+
expect(await page.evaluate(() => window.testFish)).toBe('fish,FISH');
37+
expect(await page.evaluate(() => window.testCat)).toBe('cat,CAT');
38+
expect(await page.evaluate(() => window.testDog)).toBe('dog,DOG');
39+
expect(await page.evaluate(() => window.testNumbers)).toBe('0,1,1.0');
40+
41+
await rsbuild.close();
1542
});

e2e/cases/typescript/const-enum/src/foo.ts renamed to e2e/cases/typescript/const-enum/src/constants.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export enum Animals {
44
}
55

66
// biome-ignore lint/suspicious/noConstEnum: for testing
7-
export const enum Animals2 {
8-
Fish = 0,
9-
Cat = 1,
7+
export const enum Numbers {
8+
Zero = 0,
9+
One = 1,
1010
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// biome-ignore lint/suspicious/noConstEnum: for testing
2+
export const enum Animals2 {
3+
Dog = 'dog',
4+
}
Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1-
import { Animals, Animals2 } from './foo';
1+
import { Animals, Numbers } from './constants';
22

33
declare global {
44
interface Window {
5-
test1: string;
6-
test2: string;
7-
test3: string;
8-
test4: string;
5+
testFish: string;
6+
testCat: string;
7+
testDog: string;
8+
testNumbers: string;
99
}
1010
}
1111

12-
window.test1 = `Fish ${Animals.Fish}, Cat ${Animals.Cat}`;
13-
window.test2 = `Fish ${Animals2.Fish}, Cat ${Animals2.Cat}`;
14-
window.test3 = `Fish ${Animals.Fish.toUpperCase()}, Cat ${Animals.Cat.toUpperCase()}`;
15-
window.test4 = `Fish ${Animals2.Fish.toString()}, Cat ${Animals2.Cat.toString()}`;
12+
window.testFish = `${Animals.Fish},${Animals.Fish.toUpperCase()}`;
13+
window.testCat = `${Animals.Cat},${Animals.Cat.toUpperCase()}`;
14+
window.testNumbers = `${Numbers.Zero},${Numbers.One},${Numbers.One.toFixed(1)}`;
15+
16+
import('./constants2').then(({ Animals2 }) => {
17+
window.testDog = `${Animals2.Dog},${Animals2.Dog.toUpperCase()}`;
18+
});

0 commit comments

Comments
 (0)