Skip to content

Commit

Permalink
fix(react): ensure playwright configuration is using correct port in …
Browse files Browse the repository at this point in the history
…app gen (#21941)
  • Loading branch information
Coly010 authored and jaysoo committed Feb 23, 2024
1 parent b1fa2bd commit 6e50dfc
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 46 deletions.
77 changes: 38 additions & 39 deletions e2e/react-core/src/react.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -124,45 +162,6 @@ describe('React Applications', () => {
});
}, 500000);

// TODO(crystal, @jaysoo): Investigate why this is failing.
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');

Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/generators/application/lib/add-e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@ export function updateModuleFederationE2eProject(
) {
try {
let projectConfig = readProjectConfiguration(host, options.e2eProjectName);
projectConfig.targets.e2e.options = {
...projectConfig.targets.e2e.options,
baseUrl: `http://localhost:${options.devServerPort}`,
};
updateProjectConfiguration(host, options.e2eProjectName, projectConfig);
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
}
Expand Down

0 comments on commit 6e50dfc

Please sign in to comment.