176 lines
4.7 KiB
TypeScript
176 lines
4.7 KiB
TypeScript
import {
|
|
Tree,
|
|
addProjectConfiguration,
|
|
readJson,
|
|
readProjectConfiguration,
|
|
updateJson,
|
|
updateProjectConfiguration,
|
|
} from '@nx/devkit';
|
|
import { createTreeWithEmptyWorkspace } from 'nx/src/devkit-testing-exports';
|
|
import { fixLegacyCypressTsconfig } from './tsconfig-sourcemaps';
|
|
|
|
describe('Cypress Migration: tsconfig-sourcemaps', () => {
|
|
let tree: Tree;
|
|
|
|
beforeEach(() => {
|
|
tree = createTreeWithEmptyWorkspace();
|
|
});
|
|
|
|
it('should remove tsconfig.e2e.json and update tsconfig.json', async () => {
|
|
addLegacyProject(tree);
|
|
|
|
await fixLegacyCypressTsconfig(tree);
|
|
expect(readProjectConfiguration(tree, 'legacy-e2e').targets.e2e)
|
|
.toMatchInlineSnapshot(`
|
|
{
|
|
"configurations": {
|
|
"production": {
|
|
"devServerTarget": "legacy-e2e:serve:production",
|
|
},
|
|
},
|
|
"executor": "@nx/cypress:cypress",
|
|
"options": {
|
|
"cypressConfig": "apps/legacy-e2e/cypress.config.ts",
|
|
"devServerTarget": "legacy-e2e:serve",
|
|
"testingType": "e2e",
|
|
},
|
|
}
|
|
`);
|
|
expect(readJson(tree, 'apps/legacy-e2e/tsconfig.json'))
|
|
.toMatchInlineSnapshot(`
|
|
{
|
|
"compilerOptions": {
|
|
"outDir": "../../dist/out-tsc",
|
|
"resolveJsonModule": true,
|
|
"sourceMap": false,
|
|
"strict": true,
|
|
"types": [
|
|
"cypress",
|
|
"node",
|
|
],
|
|
},
|
|
"exclude": [],
|
|
"extends": "../../tsconfig.base.json",
|
|
"files": [],
|
|
"include": [
|
|
"cypress.ci.1.config.ts",
|
|
"cypress.ci.2.config.ts",
|
|
"cypress.ci.3.config.ts",
|
|
"cypress.ci.4.config.ts",
|
|
"src/**/*.ts",
|
|
"cypress.config.ts",
|
|
],
|
|
"references": [],
|
|
}
|
|
`);
|
|
expect(tree.exists('apps/legacy-e2e/tsconfig.e2e.json')).toBeFalsy();
|
|
expect(tree.exists('apps/legacy-e2e/tsconfig.e2e.prod.json')).toBeFalsy();
|
|
});
|
|
|
|
it('should do nothing if tsconfig option is not used', async () => {
|
|
addLegacyProject(tree);
|
|
|
|
tree.delete('apps/legacy-e2e/tsconfig.e2e.json');
|
|
tree.delete('apps/legacy-e2e/tsconfig.e2e.prod.json');
|
|
const pc = readProjectConfiguration(tree, 'legacy-e2e');
|
|
|
|
delete pc.targets.e2e.options.tsConfig;
|
|
delete pc.targets.e2e.configurations;
|
|
|
|
const existingProjectConfig = pc.targets.e2e;
|
|
|
|
updateProjectConfiguration(tree, 'legacy-e2e', pc);
|
|
|
|
updateJson(tree, 'apps/legacy-e2e/tsconfig.json', (json) => {
|
|
json.references = [];
|
|
return json;
|
|
});
|
|
|
|
const existingTsConfig = readJson(tree, 'apps/legacy-e2e/tsconfig.json');
|
|
|
|
await fixLegacyCypressTsconfig(tree);
|
|
|
|
expect(readProjectConfiguration(tree, 'legacy-e2e').targets.e2e).toEqual(
|
|
existingProjectConfig
|
|
);
|
|
expect(readJson(tree, 'apps/legacy-e2e/tsconfig.json')).toEqual(
|
|
existingTsConfig
|
|
);
|
|
});
|
|
});
|
|
|
|
function addLegacyProject(tree: Tree) {
|
|
addProjectConfiguration(tree, 'legacy-e2e', {
|
|
root: 'apps/legacy-e2e',
|
|
sourceRoot: 'apps/legacy-e2e/src',
|
|
targets: {
|
|
e2e: {
|
|
executor: '@nx/cypress:cypress',
|
|
options: {
|
|
cypressConfig: 'apps/legacy-e2e/cypress.config.ts',
|
|
tsConfig: 'apps/legacy-e2e/tsconfig.e2e.json',
|
|
devServerTarget: 'legacy-e2e:serve',
|
|
testingType: 'e2e',
|
|
},
|
|
configurations: {
|
|
production: {
|
|
devServerTarget: 'legacy-e2e:serve:production',
|
|
tsConfig: 'apps/legacy-e2e/tsconfig.e2e.prod.json',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
tree.write(
|
|
'apps/legacy-e2e/tsconfig.e2e.json',
|
|
JSON.stringify({
|
|
extends: './tsconfig.json',
|
|
compilerOptions: {
|
|
sourceMap: false,
|
|
outDir: '../../dist/out-tsc',
|
|
types: ['cypress', 'node'],
|
|
},
|
|
include: ['src/**/*.ts', 'cypress.config.ts'],
|
|
})
|
|
);
|
|
tree.write(
|
|
'apps/legacy-e2e/tsconfig.e2e.prod.json',
|
|
JSON.stringify({
|
|
extends: './tsconfig.e2e.json',
|
|
compilerOptions: {
|
|
sourceMap: false,
|
|
outDir: '../../dist/out-tsc',
|
|
types: ['cypress', 'node'],
|
|
strict: true,
|
|
},
|
|
include: ['src/**/*.ts', 'cypress.config.ts'],
|
|
})
|
|
);
|
|
tree.write(
|
|
'apps/legacy-e2e/tsconfig.json',
|
|
JSON.stringify({
|
|
extends: '../../tsconfig.base.json',
|
|
compilerOptions: {
|
|
types: ['cypress', 'node'],
|
|
resolveJsonModule: true,
|
|
},
|
|
include: [
|
|
'cypress.ci.1.config.ts',
|
|
'cypress.ci.2.config.ts',
|
|
'cypress.ci.3.config.ts',
|
|
'cypress.ci.4.config.ts',
|
|
],
|
|
files: [],
|
|
references: [
|
|
{
|
|
path: './tsconfig.e2e.json',
|
|
},
|
|
{
|
|
path: './tsconfig.e2e.prod.json',
|
|
},
|
|
],
|
|
})
|
|
);
|
|
}
|