Integrations setup (#4354)
* add integration test tools * setup jest in the integrations folder * add `test:integrations` script The default `npm test` script will ignore all the tests in the `integrations` folder. * add integration tests with `webpack 5` * add integration tests with `postcss-cli` * add `npm run install:integrations` script This script will run `npm install` in every integration, and in the integrations folder itself (to setup Jest for example). * add `toIncludeCss` custom matcher * increate Jest timeout for integration tests * add integration tests with `vite` * add integration tests with `webpack 4` * add isomorphic fetch * add the ability to wait for specific stdout/stderr output * write vite tests, assert using API calls We will wait for the correct stdout/stderr output, once we know that we can request the fresh css, we will fetch it and make assertions accordingly. Port is currently hardcoded, maybe we should use a packaage to ensure that we use a free port. * add integration tests with `rollup` * add integration tests with `parcel` * run all integration tests in band * add .gitignore in integrations folder
This commit is contained in:
parent
7d4f053bb6
commit
7565099c1f
66 changed files with 64042 additions and 1 deletions
27
scripts/install-integrations.js
Normal file
27
scripts/install-integrations.js
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
let fs = require('fs/promises')
|
||||
let { spawn } = require('child_process')
|
||||
let path = require('path')
|
||||
let root = process.cwd()
|
||||
|
||||
function npmInstall(cwd) {
|
||||
return new Promise((resolve) => {
|
||||
let childProcess = spawn('npm', ['install'], { cwd })
|
||||
childProcess.on('exit', resolve)
|
||||
})
|
||||
}
|
||||
|
||||
async function install() {
|
||||
let base = path.resolve(root, 'integrations')
|
||||
let ignoreFolders = ['node_modules']
|
||||
let integrations = (await fs.readdir(base, { withFileTypes: true }))
|
||||
.filter((integration) => integration.isDirectory())
|
||||
.filter((integration) => !ignoreFolders.includes(integration.name))
|
||||
.map((folder) => path.resolve(base, folder.name))
|
||||
.concat([base])
|
||||
.map((integration) => npmInstall(integration))
|
||||
|
||||
await Promise.all(integrations)
|
||||
console.log('Done!')
|
||||
}
|
||||
|
||||
install()
|
||||
Loading…
Add table
Add a link
Reference in a new issue