fix(react): ensure playwright configuration is using correct port in app gen (#21941)

This commit is contained in:
Colum Ferry 2024-02-23 11:25:54 +00:00 committed by GitHub
parent 21e764833e
commit c9c56a2cfd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 47 additions and 45 deletions

View File

@ -29,6 +29,44 @@ describe('React Applications', () => {
afterAll(() => cleanupProject());
it('should be able to use Vite to build and test apps', async () => {
const appName = uniq('app');
const libName = uniq('lib');
runCLI(
`generate @nx/react:app ${appName} --bundler=vite --no-interactive --skipFormat`
);
runCLI(
`generate @nx/react:lib ${libName} --bundler=none --no-interactive --unit-test-runner=vitest --skipFormat`
);
// Library generated with Vite
checkFilesExist(`libs/${libName}/vite.config.ts`);
const mainPath = `apps/${appName}/src/main.tsx`;
updateFile(
mainPath,
`
import '@${proj}/${libName}';
${readFile(mainPath)}
`
);
runCLI(`build ${appName}`);
checkFilesExist(`dist/apps/${appName}/index.html`);
if (runE2ETests()) {
const e2eResults = runCLI(`e2e ${appName}-e2e`, {
env: {
DEBUG: 'cypress:server:*',
},
});
expect(e2eResults).toContain('All specs passed!');
expect(await killPorts()).toBeTruthy();
}
}, 250_000);
it('should be able to generate a react app + lib (with CSR and SSR)', async () => {
const appName = uniq('app');
const libName = uniq('lib');
@ -124,44 +162,6 @@ describe('React Applications', () => {
});
}, 500000);
it('should be able to use Vite to build and test apps', async () => {
const appName = uniq('app');
const libName = uniq('lib');
runCLI(
`generate @nx/react:app ${appName} --bundler=vite --no-interactive --skipFormat`
);
runCLI(
`generate @nx/react:lib ${libName} --bundler=none --no-interactive --unit-test-runner=vitest --skipFormat`
);
// Library generated with Vite
checkFilesExist(`libs/${libName}/vite.config.ts`);
const mainPath = `apps/${appName}/src/main.tsx`;
updateFile(
mainPath,
`
import '@${proj}/${libName}';
${readFile(mainPath)}
`
);
runCLI(`build ${appName}`);
checkFilesExist(`dist/apps/${appName}/index.html`);
if (runE2ETests()) {
const e2eResults = runCLI(`e2e ${appName}-e2e`, {
env: {
DEBUG: 'cypress:server:*',
},
});
expect(e2eResults).toContain('All specs passed!');
expect(await killPorts()).toBeTruthy();
}
}, 250_000);
it('should generate app with routing', async () => {
const appName = uniq('app');

View File

@ -49,7 +49,7 @@ export async function addE2e(
bundler: options.bundler === 'rspack' ? 'webpack' : options.bundler,
skipFormat: true,
devServerTarget: `${options.projectName}:serve`,
baseUrl: 'http://localhost:4200',
baseUrl: `http://localhost:${options.devServerPort ?? 4200}`,
jsx: true,
rootProject: options.rootProject,
webServerCommands: hasNxBuildPlugin
@ -85,7 +85,7 @@ export async function addE2e(
webServerCommand: `${getPackageManagerCommand().exec} nx serve ${
options.name
}`,
webServerAddress: 'http://localhost:4200',
webServerAddress: `http://localhost:${options.devServerPort ?? 4200}`,
rootProject: options.rootProject,
addPlugin: options.addPlugin,
});

View File

@ -11,11 +11,13 @@ export function updateModuleFederationE2eProject(
) {
try {
let projectConfig = readProjectConfiguration(host, options.e2eProjectName);
if (projectConfig.targets.e2e.executor !== '@nx/playwright:playwright') {
projectConfig.targets.e2e.options = {
...projectConfig.targets.e2e.options,
baseUrl: `http://localhost:${options.devServerPort}`,
};
updateProjectConfiguration(host, options.e2eProjectName, projectConfig);
}
} catch {
// nothing
}