Skip to content

Commit

Permalink
test(fixtures): eradicate index.js (#5222)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
wjhsf authored Feb 14, 2025
1 parent 6831028 commit 72c169c
Show file tree
Hide file tree
Showing 697 changed files with 1,119 additions and 424 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
- name: Check licenses are up to date
run: node ./scripts/tasks/generate-license-files.js --test
- name: Verify @lwc/shared is tree-shakable
run: node ./scripts/tasks/verify-treeshakable.js ./packages/@lwc/shared/dist/index.js
run: node ./scripts/tasks/verify-treeshakable.mjs ./packages/@lwc/shared/dist/index.js
- name: Verify that dependencies are declared
run: node ./scripts/tasks/check-imports-are-declared-dependencies.js
- name: Check formatting
Expand Down
2 changes: 1 addition & 1 deletion .husky/pre-push
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set -e
node ./scripts/tasks/check-and-rewrite-package-json.js --test
node ./scripts/tasks/generate-license-files.js --test
node ./scripts/tasks/verify-treeshakable.js ./packages/@lwc/shared/dist/index.js
node ./scripts/tasks/verify-treeshakable.mjs ./packages/@lwc/shared/dist/index.js
node ./scripts/tasks/check-imports-are-declared-dependencies.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { describe } from 'vitest';
import { transformSync } from '@babel/core';
import { LWC_VERSION, HIGHEST_API_VERSION } from '@lwc/shared';
import { testFixtureDir } from '@lwc/test-utils-lwc-internals';
import plugin from '../index';
import plugin, { type LwcBabelPluginOptions } from '../index';

const BASE_OPTS = {
namespace: 'lwc',
Expand Down Expand Up @@ -62,7 +62,7 @@ function transform(source: string, opts = {}) {
}

describe('fixtures', () => {
testFixtureDir(
testFixtureDir<LwcBabelPluginOptions>(
{
root: path.resolve(__dirname, 'fixtures'),
pattern: '**/actual.js',
Expand Down
49 changes: 27 additions & 22 deletions packages/@lwc/engine-server/src/__tests__/fixtures.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,36 +9,38 @@ import path from 'node:path';
import { vi, describe, beforeAll, afterAll } from 'vitest';
import { rollup } from 'rollup';
import lwcRollupPlugin from '@lwc/rollup-plugin';
import { testFixtureDir, formatHTML } from '@lwc/test-utils-lwc-internals';
import { testFixtureDir, formatHTML, pluginVirtual } from '@lwc/test-utils-lwc-internals';
import { setFeatureFlagForTest } from '../index';
import type { LightningElementConstructor } from '@lwc/engine-core/dist/framework/base-lightning-element';
import type { RollupLwcOptions } from '@lwc/rollup-plugin';
import type * as lwc from '../index';

interface FixtureModule {
default: typeof lwc.LightningElement;
props?: { [key: string]: unknown };
}

vi.mock('lwc', async () => {
const lwcEngineServer = await import('../index');
try {
lwcEngineServer.setHooks({
sanitizeHtmlContent(content: unknown) {
return content as string;
},
});
lwcEngineServer.setHooks({ sanitizeHtmlContent: String });
} catch (_err) {
// Ignore error if the hook is already overridden
}
return lwcEngineServer;
});

interface FixtureConfig {
/**
* Component name that serves as the entrypoint / root component of the fixture.
* @example x/test
*/
entry: string;

/** Props to provide to the root component. */
props?: Record<string, string>;
}

async function compileFixture({
input,
entry,
dirname,
options,
}: {
input: string;
entry: string;
dirname: string;
options?: RollupLwcOptions;
}) {
Expand All @@ -48,11 +50,13 @@ async function compileFixture({
.join('-') || 'default';
const modulesDir = path.resolve(dirname, './modules');
const outputFile = path.resolve(dirname, `./dist/compiled-${optionsAsString}.js`);
const input = 'virtual/fixture/test.js';

const bundle = await rollup({
input,
external: ['lwc', 'vitest'],
external: ['lwc', '@lwc/ssr-runtime', 'vitest'],
plugins: [
pluginVirtual(`export { default } from "${entry}";`, input),
lwcRollupPlugin({
enableDynamicComponents: true,
experimentalDynamicComponent: {
Expand Down Expand Up @@ -95,23 +99,23 @@ async function compileFixture({
}

function testFixtures(options?: RollupLwcOptions) {
testFixtureDir(
testFixtureDir<FixtureConfig>(
{
root: path.resolve(__dirname, 'fixtures'),
pattern: '**/index.js',
pattern: '**/config.json',
},
async ({ filename, dirname, config }) => {
async ({ dirname, config }) => {
let compiledFixturePath;

try {
compiledFixturePath = await compileFixture({
input: filename,
entry: config!.entry,
dirname,
options,
});
} catch (err: any) {
// Filter out the stacktrace, just include the LWC error message
const message = err?.message?.match(/(LWC\d+[^\n]+)/)?.[1];
const message = err?.message?.match(/(LWC\d+[^\n]+)/)?.[1] ?? err.message;
return {
'expected.html': '',
'error.txt': message,
Expand All @@ -128,9 +132,10 @@ function testFixtures(options?: RollupLwcOptions) {
let result;
let err;
try {
const { default: module } = (await import(compiledFixturePath)) as FixtureModule;
const module: LightningElementConstructor = (await import(compiledFixturePath))
.default;
result = formatHTML(
lwcEngineServer!.renderComponent('fixture-test', module, config?.props ?? {})
lwcEngineServer.renderComponent('fixture-test', module, config?.props ?? {})
);
} catch (_err: any) {
if (_err?.name === 'AssertionError') {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/comments-text"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/parent"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/parent"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/parent"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/parent"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/parent"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/cmp"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/cmp"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/parent"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/parent"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/attribute-boolean-expr"
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"entry": "x/attribute-boolean"
}
Loading

0 comments on commit 72c169c

Please sign in to comment.