Skip to content

Commit 72c169c

Browse files
authored
test(fixtures): eradicate index.js (#5222)
* refactor: create rollup plugin for virtual modules * test(fixtures): refactor fixture config defs to individual files they're not actually shared * test(fixtures): update to use config.json instead of index.js * chore: eradicate index.js * chore: fix file extension * chore: oops forgot this part
1 parent 6831028 commit 72c169c

File tree

697 files changed

+1119
-424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

697 files changed

+1119
-424
lines changed

.github/workflows/unit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
- name: Check licenses are up to date
5454
run: node ./scripts/tasks/generate-license-files.js --test
5555
- name: Verify @lwc/shared is tree-shakable
56-
run: node ./scripts/tasks/verify-treeshakable.js ./packages/@lwc/shared/dist/index.js
56+
run: node ./scripts/tasks/verify-treeshakable.mjs ./packages/@lwc/shared/dist/index.js
5757
- name: Verify that dependencies are declared
5858
run: node ./scripts/tasks/check-imports-are-declared-dependencies.js
5959
- name: Check formatting

.husky/pre-push

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set -e
22
node ./scripts/tasks/check-and-rewrite-package-json.js --test
33
node ./scripts/tasks/generate-license-files.js --test
4-
node ./scripts/tasks/verify-treeshakable.js ./packages/@lwc/shared/dist/index.js
4+
node ./scripts/tasks/verify-treeshakable.mjs ./packages/@lwc/shared/dist/index.js
55
node ./scripts/tasks/check-imports-are-declared-dependencies.js

packages/@lwc/babel-plugin-component/src/__tests__/index.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { describe } from 'vitest';
99
import { transformSync } from '@babel/core';
1010
import { LWC_VERSION, HIGHEST_API_VERSION } from '@lwc/shared';
1111
import { testFixtureDir } from '@lwc/test-utils-lwc-internals';
12-
import plugin from '../index';
12+
import plugin, { type LwcBabelPluginOptions } from '../index';
1313

1414
const BASE_OPTS = {
1515
namespace: 'lwc',
@@ -62,7 +62,7 @@ function transform(source: string, opts = {}) {
6262
}
6363

6464
describe('fixtures', () => {
65-
testFixtureDir(
65+
testFixtureDir<LwcBabelPluginOptions>(
6666
{
6767
root: path.resolve(__dirname, 'fixtures'),
6868
pattern: '**/actual.js',

packages/@lwc/engine-server/src/__tests__/fixtures.spec.ts

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,38 @@ import path from 'node:path';
99
import { vi, describe, beforeAll, afterAll } from 'vitest';
1010
import { rollup } from 'rollup';
1111
import lwcRollupPlugin from '@lwc/rollup-plugin';
12-
import { testFixtureDir, formatHTML } from '@lwc/test-utils-lwc-internals';
12+
import { testFixtureDir, formatHTML, pluginVirtual } from '@lwc/test-utils-lwc-internals';
1313
import { setFeatureFlagForTest } from '../index';
14+
import type { LightningElementConstructor } from '@lwc/engine-core/dist/framework/base-lightning-element';
1415
import type { RollupLwcOptions } from '@lwc/rollup-plugin';
15-
import type * as lwc from '../index';
16-
17-
interface FixtureModule {
18-
default: typeof lwc.LightningElement;
19-
props?: { [key: string]: unknown };
20-
}
2116

2217
vi.mock('lwc', async () => {
2318
const lwcEngineServer = await import('../index');
2419
try {
25-
lwcEngineServer.setHooks({
26-
sanitizeHtmlContent(content: unknown) {
27-
return content as string;
28-
},
29-
});
20+
lwcEngineServer.setHooks({ sanitizeHtmlContent: String });
3021
} catch (_err) {
3122
// Ignore error if the hook is already overridden
3223
}
3324
return lwcEngineServer;
3425
});
3526

27+
interface FixtureConfig {
28+
/**
29+
* Component name that serves as the entrypoint / root component of the fixture.
30+
* @example x/test
31+
*/
32+
entry: string;
33+
34+
/** Props to provide to the root component. */
35+
props?: Record<string, string>;
36+
}
37+
3638
async function compileFixture({
37-
input,
39+
entry,
3840
dirname,
3941
options,
4042
}: {
41-
input: string;
43+
entry: string;
4244
dirname: string;
4345
options?: RollupLwcOptions;
4446
}) {
@@ -48,11 +50,13 @@ async function compileFixture({
4850
.join('-') || 'default';
4951
const modulesDir = path.resolve(dirname, './modules');
5052
const outputFile = path.resolve(dirname, `./dist/compiled-${optionsAsString}.js`);
53+
const input = 'virtual/fixture/test.js';
5154

5255
const bundle = await rollup({
5356
input,
54-
external: ['lwc', 'vitest'],
57+
external: ['lwc', '@lwc/ssr-runtime', 'vitest'],
5558
plugins: [
59+
pluginVirtual(`export { default } from "${entry}";`, input),
5660
lwcRollupPlugin({
5761
enableDynamicComponents: true,
5862
experimentalDynamicComponent: {
@@ -95,23 +99,23 @@ async function compileFixture({
9599
}
96100

97101
function testFixtures(options?: RollupLwcOptions) {
98-
testFixtureDir(
102+
testFixtureDir<FixtureConfig>(
99103
{
100104
root: path.resolve(__dirname, 'fixtures'),
101-
pattern: '**/index.js',
105+
pattern: '**/config.json',
102106
},
103-
async ({ filename, dirname, config }) => {
107+
async ({ dirname, config }) => {
104108
let compiledFixturePath;
105109

106110
try {
107111
compiledFixturePath = await compileFixture({
108-
input: filename,
112+
entry: config!.entry,
109113
dirname,
110114
options,
111115
});
112116
} catch (err: any) {
113117
// Filter out the stacktrace, just include the LWC error message
114-
const message = err?.message?.match(/(LWC\d+[^\n]+)/)?.[1];
118+
const message = err?.message?.match(/(LWC\d+[^\n]+)/)?.[1] ?? err.message;
115119
return {
116120
'expected.html': '',
117121
'error.txt': message,
@@ -128,9 +132,10 @@ function testFixtures(options?: RollupLwcOptions) {
128132
let result;
129133
let err;
130134
try {
131-
const { default: module } = (await import(compiledFixturePath)) as FixtureModule;
135+
const module: LightningElementConstructor = (await import(compiledFixturePath))
136+
.default;
132137
result = formatHTML(
133-
lwcEngineServer!.renderComponent('fixture-test', module, config?.props ?? {})
138+
lwcEngineServer.renderComponent('fixture-test', module, config?.props ?? {})
134139
);
135140
} catch (_err: any) {
136141
if (_err?.name === 'AssertionError') {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"entry": "x/comments-text"
3+
}

packages/@lwc/engine-server/src/__tests__/fixtures/adjacent-text-nodes/preserve-comments-off/comments-at-end/index.js

Lines changed: 0 additions & 1 deletion
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"entry": "x/comments-text"
3+
}

packages/@lwc/engine-server/src/__tests__/fixtures/adjacent-text-nodes/preserve-comments-off/comments-then-element/index.js

Lines changed: 0 additions & 1 deletion
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"entry": "x/comments-text"
3+
}

packages/@lwc/engine-server/src/__tests__/fixtures/adjacent-text-nodes/preserve-comments-off/deep-for-each-with-rendered-item/index.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)