# Create React App End-to-End Tests ## Usage These tests ensure various functionality contracts are upheld across dependency upgrades. To get started locally, run `cd packages/react-scripts/ && yarn link; cd ../../test/ && ../node_modules/.bin/jest --watchAll`. It's suggested that you filter down tests to avoid re-running everything. The most common tests will be the webpack messages.
To only run the webpack messages, type `p` followed by `webpack-message` and press `[enter]`. ## How do these work? ### `fixtures/` Each `fixture/` gets spun up in a temporary directory and has its dependencies installed with Yarn PnP (for speed).
To opt-out of PnP, create a `.disable-pnp` file in the specific fixture directory. A global (`testSetup`) is created which has a few interesting properties: - `testSetup.testDirectory`: the directory containing the test application - `testSetup.scripts`: an object allowing you to invoke `react-scripts` commands and friends All tests for each `fixture/` are then ran. #### `testSetup.scripts` ##### `start` This will run the `start` command, it can be ran asynchronously or blocking if `{ smoke: true }` is used.
If ran asynchronously, it will return the `port` and a `done` function to clean up the process. If ran blocking, it will return the `stdout` and `stderr` of the process. ##### `build` This will run the `build` command and return the `stdout` and `stderr` of the process. ##### `test` This will run the `test` command and return the `stdout` and `stderr` of the process. ##### `serve` This will run serve the application. It will return the `port` and a `done` function to clean up the process.