bahmutov / start-server-and-test

Starts server, waits for URL, then runs test command; when the tests end, shuts down server
MIT License
1.54k stars 95 forks source link

How to set NODE_ENV=test? #184

Open stoplion opened 5 years ago

stoplion commented 5 years ago

{ "start-server-and-test": "^1.9.1", } OS X 10.13.6

I'm using start-server-and-test to run Cypress. We have a IP restriction when NOT in NODE_ENV=test. So, I run NODE_ENV=test start-server-and-test start http://localhost:5000 cy:open. But console.log(process.env.NODE_ENV) on the server shows it is still in development mode, so no tests ever run.

How can I set the NODE_ENV when using start-server-and-test?

bahmutov commented 5 years ago

@stoplion can you look at PR #185 and see if this matches your situation - I am testing there with NODE_ENV=... variable and it is set in the server process correctly.

george-norris-salesforce commented 4 years ago

Yea I tried it, still sets it to development

Norfeldt commented 3 years ago

@bahmutov I think I got a similar issue NOT able to set PERCY_TOKEN via package script

I have been trying really hard to set the PERCY_TOKEN on a local test run according the official guideline from percy and trigger it via yarn.

The guideline says:

$ PERCY_TOKEN=aaabbbcccdddeeefff PERCY_BRANCH=local npm test

My attempt right now looks like this:

package.json

... "scripts": { "start": "react-scripts -r @cypress/instrument-cra start", "start:silent": "BROWSER=none yarn start", "start:server": "start-server-and-test start:silent http://localhost:3000", "build": "react-scripts build", "eject": "react-scripts eject", "envGenerateExample": "cat .env | sed 's/=./=/g' > .env.example", "jest:test": "react-scripts test --env=jest-environment-jsdom-sixteen", "cy:run": " 'yarn start:server './node_modules/.bin/cypress run'", "cy:open": "yarn start:server './node_modules/.bin/cypress open'", "cy:ci": "yarn start:server cy:chrome", "cy:chrome": "cypress run --browser chrome --record", "percy:exec": "yarn percy exec -- cypress run", "cy:percy": "yarn start:server percy:exec", "percy:local": "PERCY_TOKEN=$(grep 'PERCY_TOKEN.' .env | sed 's/.*=//'); PERCY_BRANCH=local;", "cy:percy:local": "yarn percy:local; yarn start:server percy:exec" }, ...


```sh
$ yarn cy:percy:local

Compiled successfully!

You can now view playground in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://192.168.1.163:3000

Note that the development build is not optimized.
To create a production build, use yarn build.

...

> playground@0.2.0 percy:exec /Users/norfeldt/Repos/playground
> yarn percy exec -- cypress run

warning From Yarn 1.0 onwards, scripts don't require "--" for options to be forwarded. In a future version, any explicit "--" will be forwarded as-is to the scripts.
$ /Users/norfeldt/Repos/playground/node_modules/.bin/percy exec cypress run
 ›   Warning: Skipping visual tests. PERCY_TOKEN was not provided.
...

If you want to try it out on your own percy then you more than welcome to clone this branch:

https://github.com/Norfeldt/react-kitchen-sink/tree/local-percy

and set the .env tokens