101 lines
3.2 KiB
TypeScript
101 lines
3.2 KiB
TypeScript
import { installedCypressVersion } from '@nx/cypress/src/utils/cypress-version';
|
|
import { readJson, readProjectConfiguration, Tree } from '@nx/devkit';
|
|
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
|
|
import { Linter } from '@nx/linter';
|
|
import { libraryGenerator } from '@nx/js';
|
|
import { cypressProjectGenerator } from './cypress-project';
|
|
|
|
jest.mock('@nx/cypress/src/utils/cypress-version');
|
|
describe('@nx/storybook:cypress-project', () => {
|
|
let tree: Tree;
|
|
let mockedInstalledCypressVersion: jest.Mock<
|
|
ReturnType<typeof installedCypressVersion>
|
|
> = installedCypressVersion as never;
|
|
|
|
beforeEach(async () => {
|
|
mockedInstalledCypressVersion.mockReturnValue(10);
|
|
tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
|
|
await libraryGenerator(tree, {
|
|
name: 'test-ui-lib',
|
|
projectNameAndRootFormat: 'as-provided',
|
|
});
|
|
});
|
|
afterEach(() => jest.clearAllMocks());
|
|
|
|
it('should generate files', async () => {
|
|
await cypressProjectGenerator(tree, {
|
|
name: 'test-ui-lib',
|
|
linter: Linter.EsLint,
|
|
});
|
|
|
|
expect(tree.exists('apps/test-ui-lib-e2e/cypress.config.ts')).toBeTruthy();
|
|
const cypressConfig = tree.read(
|
|
'apps/test-ui-lib-e2e/cypress.config.ts',
|
|
'utf-8'
|
|
);
|
|
expect(cypressConfig).toMatchSnapshot();
|
|
});
|
|
|
|
it('should update cypress.json file if present', async () => {
|
|
mockedInstalledCypressVersion.mockReturnValue(9);
|
|
|
|
await cypressProjectGenerator(tree, {
|
|
name: 'test-ui-lib',
|
|
linter: Linter.EsLint,
|
|
});
|
|
|
|
expect(tree.exists('apps/test-ui-lib-e2e/cypress.json')).toBeTruthy();
|
|
const cypressConfig = readJson(tree, 'apps/test-ui-lib-e2e/cypress.json');
|
|
expect(cypressConfig.baseUrl).toEqual('http://localhost:4400');
|
|
});
|
|
|
|
it('should update `angular.json` file', async () => {
|
|
await cypressProjectGenerator(tree, {
|
|
name: 'test-ui-lib',
|
|
linter: Linter.EsLint,
|
|
});
|
|
const project = readProjectConfiguration(tree, 'test-ui-lib-e2e');
|
|
|
|
expect(project.targets.e2e.options.devServerTarget).toEqual(
|
|
'test-ui-lib:storybook'
|
|
);
|
|
expect(project.targets.e2e.options.headless).toBeUndefined();
|
|
expect(project.targets.e2e.options.watch).toBeUndefined();
|
|
expect(project.targets.e2e.configurations).toEqual({
|
|
ci: { devServerTarget: `test-ui-lib:storybook:ci` },
|
|
});
|
|
});
|
|
|
|
it('should generate in the correct folder', async () => {
|
|
await cypressProjectGenerator(tree, {
|
|
name: 'test-ui-lib',
|
|
directory: 'one/two',
|
|
linter: Linter.EsLint,
|
|
});
|
|
expect(
|
|
readProjectConfiguration(tree, 'one-two-test-ui-lib-e2e')
|
|
).toBeDefined();
|
|
expect(
|
|
tree.exists('apps/one/two/test-ui-lib-e2e/cypress.config.ts')
|
|
).toBeTruthy();
|
|
});
|
|
|
|
it('should make sure the cypress packages are installed', async () => {
|
|
expect(
|
|
readJson(tree, 'package.json').devDependencies['cypress']
|
|
).toBeFalsy();
|
|
await cypressProjectGenerator(tree, {
|
|
name: 'test-ui-lib',
|
|
directory: 'one/two',
|
|
linter: Linter.EsLint,
|
|
});
|
|
expect(
|
|
readJson(tree, 'package.json').devDependencies['cypress']
|
|
).toBeTruthy();
|
|
|
|
expect(
|
|
readJson(tree, 'package.json').devDependencies['@nx/cypress']
|
|
).toBeTruthy();
|
|
});
|
|
});
|