Files
cypress/system-tests/test/justInTimeCompile_spec.ts
Bill Glesias 15c5761eb6 breaking: make JustInTimeCompile GA from experimentalJustInTimeCompile and default to true (#30641)
* pull support for JIT from vite since it doesn't have an affect for end users or performance (webpack only) [run ci]

rebase this

* remove the experimentalJIT flag and make it GA (default still false) [run ci]

* enable justInTimeCompile by default [run ci]

* chore: bump cache [run ci]
2024-11-21 15:25:59 -05:00

76 lines
2.8 KiB
TypeScript

import systemTests from '../lib/system-tests'
// original source code https://github.com/lodash/lodash/issues/2459#issuecomment-230255219
const getAllMatches = (source, regex) => {
const matches = []
source.replace(regex, function () {
matches.push({
match: arguments[0],
offset: arguments[arguments.length - 2],
groups: Array.prototype.slice.call(arguments, 1, -2),
})
return arguments[0]
})
return matches
}
describe('component testing: justInTimeCompile', function () {
systemTests.setup()
// makes sure justInTimeCompile=true has no affect on how vite compiles files.
systemTests.it('vite@5', {
project: 'justInTimeCompile/vite',
testingType: 'component',
browser: 'electron',
expectedExitCode: 0,
onRun: async (exec) => {
const { stderr } = await exec({
processEnv: {
// print debug logs from @cypress/vite-dev-server to see how many times specs are updated
DEBUG: 'cypress:vite*',
},
})
const serverPortRegex = /Successfully launched the vite server on port 5173/g
const componentsCompiledSeparatelyRegex = /dev\-server\:secs\:changed\: src\/Component\-[1-3]\.cy\.jsx/g
const totalServersSamePort = getAllMatches(stderr, serverPortRegex).length
const totalComponentsCompiledSeparately = getAllMatches(stderr, componentsCompiledSeparatelyRegex).length
// expect 1 server to be created
expect(totalServersSamePort).to.equal(1)
// expect each component to be compiled all together (no JIT support for vite)
expect(totalComponentsCompiledSeparately).to.equal(0)
},
})
systemTests.it('webpack@5', {
project: 'justInTimeCompile/webpack',
testingType: 'component',
browser: 'electron',
expectedExitCode: 0,
onRun: async (exec) => {
const { stderr } = await exec({
processEnv: {
// print debug logs from @cypress/webpack-dev-server to see how many times specs are updated
DEBUG: 'cypress:webpack*',
},
})
const serverPortRegex = /Component testing webpack server 5 started on port 8080/g
const componentsCompiledSeparatelyRegex = /justInTimeCompile\/webpack\/src\/Component\-[1-3].cy.jsx/g
const totalServersSamePort = getAllMatches(stderr, serverPortRegex).length
const totalComponentsCompiledSeparately = getAllMatches(stderr, componentsCompiledSeparatelyRegex).length
// expect 1 server to be created
expect(totalServersSamePort).to.equal(1)
// expect each component compiled individually (3 occurrences total, the first occurs twice due to file writes)
// sometimes, the first output does not get logged. This is not of concern, hence the greaterThan assertion
expect(totalComponentsCompiledSeparately).to.be.greaterThan(2)
},
})
})