UNPKG

@ember/app-blueprint

Version:
219 lines (175 loc) 6.05 kB
import { describe, it, expect } from 'vitest'; import fixturify from 'fixturify'; import stripAnsi from 'strip-ansi'; import { generateApp } from './helpers.mjs'; describe('Slow(JavaScript): Runs tests', async function () { it('runs in a freshly generated app', async function () { let app = await generateApp({ flags: ['--pnpm'], skipNpm: false }); let { stdout: stdout1, exitCode: exitCode1 } = await app.execa('pnpm', [ 'test', ]); if (!process.env.CI) { console.log(stdout1); } expect(stdout1).to.contain('# tests 1'); expect(stdout1).to.contain('# pass 1'); expect(stdout1).to.contain('# skip 0'); expect(stdout1).to.contain('# todo 0'); expect(stdout1).to.contain('# ok'); expect(exitCode1).to.equal(0); }); it('runs in an app with fixtures', async function () { let app = await generateApp({ flags: ['--pnpm'], skipNpm: false }); fixturify.writeSync( app.dir, fixturify.readSync('./tests/fixtures/tests-js-10'), ); let { stdout: stdout2, exitCode: exitCode2 } = await app.execa('pnpm', [ 'test', ]); if (!process.env.CI) { console.log(stdout2); } expect(stdout2).to.match(/ok .* Acceptance \| app route/); expect(stdout2).to.match(/ok .* Acceptance \| index/); expect(stdout2).to.match(/ok .* Integration \| Component \| sweet/); expect(stdout2).to.match(/ok .* Unit \| Route \| fancy/); expect(stdout2).to.match(/ok .* Ember.onerror/); expect(stdout2).to.contain('# tests 6'); expect(stdout2).to.contain('# pass 6'); expect(stdout2).to.contain('# skip 0'); expect(stdout2).to.contain('# todo 0'); expect(stdout2).to.contain('# ok'); expect(exitCode2).to.equal(0); }); it('runs when serving /tests', async function () { let app = await generateApp({ flags: ['--pnpm'], skipNpm: false }); await app.execa('pnpm', ['install', '--save-dev', 'testem', 'http-proxy']); let fixtures = fixturify.readSync('./tests/fixtures/tests-js-20'); let server; try { server = app.execa('pnpm', ['start']); let appURL = await new Promise((resolve) => { // Read app url from Vite server output server.stdout.on('data', (line) => { let parsed = stripAnsi(line.toString()); let result = /Local:\s+(https?:\/\/.*)\//g.exec(parsed); if (process.env.CI) { console.log(parsed); } if (result) { resolve(result[1]); } }); }); fixtures['testem-dev.js'] = fixtures['testem-dev.js'].replace( '%APP_URL%', appURL, ); fixturify.writeSync(app.dir, fixtures); let testResult = await app.execa('pnpm', [ 'testem', '--file', 'testem-dev.js', 'ci', ]); if (process.env.CI) { console.log(testResult.stdout); console.log(testResult.stderr); } expect(testResult.exitCode).to.eq(0); } finally { server?.kill('SIGKILL'); } }); }); describe('Slow(TypeScript): Runs tests', async function () { it('runs in a freshly generated app', async function () { let app = await generateApp({ flags: ['--pnpm', '--typescript'], skipNpm: false, }); let { stdout: stdout1, exitCode: exitCode1 } = await app.execa('pnpm', [ 'test', ]); if (!process.env.CI) { console.log(stdout1); } expect(stdout1).to.contain('# tests 1'); expect(stdout1).to.contain('# pass 1'); expect(stdout1).to.contain('# skip 0'); expect(stdout1).to.contain('# todo 0'); expect(stdout1).to.contain('# ok'); expect(exitCode1).to.equal(0); }); it('runs in an app with fixtures', async function () { let app = await generateApp({ flags: ['--pnpm', '--typescript'], skipNpm: false, }); fixturify.writeSync( app.dir, fixturify.readSync('./tests/fixtures/tests-ts-10'), ); let { stdout: stdout2, exitCode: exitCode2 } = await app.execa('pnpm', [ 'test', ]); if (!process.env.CI) { console.log(stdout2); } expect(stdout2).to.match(/ok .* Acceptance \| app route/); expect(stdout2).to.match(/ok .* Acceptance \| index/); expect(stdout2).to.match(/ok .* Integration \| Component \| sweet/); expect(stdout2).to.match(/ok .* Unit \| Route \| fancy/); expect(stdout2).to.match(/ok .* Ember.onerror/); expect(stdout2).to.contain('# tests 6'); expect(stdout2).to.contain('# pass 6'); expect(stdout2).to.contain('# skip 0'); expect(stdout2).to.contain('# todo 0'); expect(stdout2).to.contain('# ok'); expect(exitCode2).to.equal(0); }); it('runs when serving /tests', async function () { let app = await generateApp({ flags: ['--pnpm', '--typescript'], skipNpm: false, }); await app.execa('pnpm', ['install', '--save-dev', 'testem', 'http-proxy']); let fixtures = fixturify.readSync('./tests/fixtures/tests-js-20'); let server; try { server = app.execa('pnpm', ['start']); let appURL = await new Promise((resolve) => { // Read app url from Vite server output server.stdout.on('data', (line) => { let parsed = stripAnsi(line.toString()); let result = /Local:\s+(https?:\/\/.*)\//g.exec(parsed); if (process.env.CI) { console.log(parsed); } if (result) { resolve(result[1]); } }); }); fixtures['testem-dev.js'] = fixtures['testem-dev.js'].replace( '%APP_URL%', appURL, ); fixturify.writeSync(app.dir, fixtures); let testResult = await app.execa('pnpm', [ 'testem', '--file', 'testem-dev.js', 'ci', ]); if (process.env.CI) { console.log(testResult.stdout); console.log(testResult.stderr); } expect(testResult.exitCode).to.eq(0); } finally { server?.kill('SIGKILL'); } }); });