test(ng-schematics): add tests (#10753)

This commit is contained in:
Nikolay Vitkov 2023-08-18 13:45:02 +02:00 committed by GitHub
parent 683e18189c
commit 504778d2dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 83 additions and 12 deletions

View File

@ -55,6 +55,10 @@ function parseUserTestArgs(userArgs: Record<string, string>): SchematicsSpec {
options['route'] = userArgs['n']; options['route'] = userArgs['n'];
} }
if (options['route'] && !options['route'].startsWith('/')) {
options['route'] = `/${options['route']}`;
}
return options as SchematicsSpec; return options as SchematicsSpec;
} }

View File

@ -26,6 +26,30 @@ describe('@puppeteer/ng-schematics: e2e', () => {
expect(tree.files).not.toContain('/e2e/tests/my-test.e2e.ts'); expect(tree.files).not.toContain('/e2e/tests/my-test.e2e.ts');
expect(tree.files).toContain('/e2e/tests/my-test.test.ts'); expect(tree.files).toContain('/e2e/tests/my-test.test.ts');
}); });
it('should create file with route', async () => {
const route = 'home';
const tree = await buildTestingTree('e2e', 'single', {
name: 'myTest',
route,
});
expect(tree.files).toContain('/e2e/tests/my-test.e2e.ts');
expect(tree.readContent('/e2e/tests/my-test.e2e.ts')).toContain(
`setupBrowserHooks('/${route}');`
);
});
it('should create with route with starting slash', async () => {
const route = '/home';
const tree = await buildTestingTree('e2e', 'single', {
name: 'myTest',
route,
});
expect(tree.files).toContain('/e2e/tests/my-test.e2e.ts');
expect(tree.readContent('/e2e/tests/my-test.e2e.ts')).toContain(
`setupBrowserHooks('${route}');`
);
});
}); });
describe('Multi projects', () => { describe('Multi projects', () => {
@ -53,5 +77,33 @@ describe('@puppeteer/ng-schematics: e2e', () => {
getMultiProjectFile('e2e/tests/my-test.test.ts') getMultiProjectFile('e2e/tests/my-test.test.ts')
); );
}); });
it('should create file with route', async () => {
const route = 'home';
const tree = await buildTestingTree('e2e', 'multi', {
name: 'myTest',
route,
});
expect(tree.files).toContain(
getMultiProjectFile('e2e/tests/my-test.e2e.ts')
);
expect(
tree.readContent(getMultiProjectFile('e2e/tests/my-test.e2e.ts'))
).toContain(`setupBrowserHooks('/${route}');`);
});
it('should create with route with starting slash', async () => {
const route = '/home';
const tree = await buildTestingTree('e2e', 'multi', {
name: 'myTest',
route,
});
expect(tree.files).toContain(
getMultiProjectFile('e2e/tests/my-test.e2e.ts')
);
expect(
tree.readContent(getMultiProjectFile('e2e/tests/my-test.e2e.ts'))
).toContain(`setupBrowserHooks('${route}');`);
});
}); });
}); });

View File

@ -14,15 +14,16 @@
* limitations under the License. * limitations under the License.
*/ */
const {spawn} = require('child_process'); import {spawn} from 'child_process';
const {readFile, writeFile} = require('fs/promises'); import {readFile, writeFile} from 'fs/promises';
const {join} = require('path'); import {join} from 'path';
const {cwd} = require('process'); import {cwd} from 'process';
const isInit = process.argv.indexOf('--init') !== -1; const isInit = process.argv.indexOf('--init') !== -1;
const isMulti = process.argv.indexOf('--multi') !== -1; const isMulti = process.argv.indexOf('--multi') !== -1;
const isBuild = process.argv.indexOf('--build') !== -1; const isBuild = process.argv.indexOf('--build') !== -1;
const isTest = process.argv.indexOf('--test') !== -1; const isE2E = process.argv.indexOf('--e2e') !== -1;
const isConfig = process.argv.indexOf('--config') !== -1;
const commands = { const commands = {
build: ['npm run build'], build: ['npm run build'],
createSandbox: ['npx ng new sandbox --defaults'], createSandbox: ['npx ng new sandbox --defaults'],
@ -51,9 +52,17 @@ const commands = {
}, },
}, },
], ],
runSchematicsTest: [ runSchematicsE2E: [
{ {
command: 'npm run schematics:test', command: 'npm run schematics:e2e',
options: {
cwd: join(cwd(), '/sandbox/'),
},
},
],
runSchematicsConfig: [
{
command: 'npm run schematics:config',
options: { options: {
cwd: join(cwd(), '/sandbox/'), cwd: join(cwd(), '/sandbox/'),
}, },
@ -69,8 +78,10 @@ const scripts = {
// Runs the Puppeteer Ng-Schematics against the sandbox // Runs the Puppeteer Ng-Schematics against the sandbox
schematics: schematics:
'npm run delete:file && npm run build:schematics && schematics ../:ng-add --dry-run=false', 'npm run delete:file && npm run build:schematics && schematics ../:ng-add --dry-run=false',
'schematics:test': 'schematics:e2e':
'npm run build:schematics && schematics ../:test --dry-run=false', 'npm run build:schematics && schematics ../:e2e --dry-run=false',
'schematics:config':
'npm run build:schematics && schematics ../:config --dry-run=false',
}; };
/** /**
* *
@ -134,9 +145,13 @@ async function main() {
if (isBuild) { if (isBuild) {
await executeCommand(commands.build); await executeCommand(commands.build);
} }
await executeCommand( if (isE2E) {
isTest ? commands.runSchematicsTest : commands.runSchematics await executeCommand(commands.runSchematicsE2E);
); } else if (isConfig) {
await executeCommand(commands.runSchematicsConfig);
} else {
await executeCommand(commands.runSchematics);
}
} }
} }