You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.6 KiB
63 lines
1.6 KiB
# Prevent push when skipping Cypress tests
|
|
|
|
Make sure your Cypress testing pipeline never let's you push broken code
|
|
when accidentally skipping tests.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
git clone https://git.peterbabic.dev/demo/cypress-prevent-push-skips.git
|
|
cd cypress-prevent-push-skips
|
|
npm install
|
|
```
|
|
|
|
## How does it work
|
|
|
|
![demo](demo.gif)
|
|
|
|
Edit [spec.js](cypress/integration/spec.js), add **.skip** or **.only**
|
|
modifier to the test or tests and try to push any commited changes this way
|
|
to the repository. The push shoud fail due to pre-push hook, taht makes
|
|
sure that the push fails in two situations:
|
|
|
|
1. any test contains **.skip** or **.only**, which means not all of them
|
|
would be executed
|
|
1. any test fails, step 1 endures al ltests are executed
|
|
|
|
The detection happens in the
|
|
[package.json](https://git.peterbabic.dev/demo/cypress-prevent-push-skips/src/branch/master/package.json#L13)
|
|
|
|
```bash
|
|
grep -Rvzq -e '.skip' -e '.only' cypress/integration
|
|
```
|
|
|
|
More details described in the blog post located at:
|
|
|
|
<https://peterbabic.dev/blog/prevent-push-when-skipping-cypress-tests>
|
|
|
|
## Preventing the behavior
|
|
|
|
The push can be executed even with skipping or failing tests by supplying
|
|
`--no-verify`
|
|
|
|
```bash
|
|
git push origin master --no-verify
|
|
```
|
|
|
|
## Possible improvements
|
|
|
|
Currently, the message provided looks like this:
|
|
|
|
```bash
|
|
$ git push origin master
|
|
husky > pre-push (node v14.9.0)
|
|
husky > pre-push hook failed (add --no-verify to bypass)
|
|
error: failed to push some refs to 'git.peterbabic.dev:demo/cypress-prevent-push-skips.git'
|
|
```
|
|
|
|
However, it is not clear why the pre-push hook failed. The verbosity could
|
|
be improved.
|
|
|
|
## License
|
|
|
|
MIT
|
|
|