You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In my CI pipeline I was migrating away from the package.json homepage setting to PUBLIC_URL for more flexibility.
I have a suite of end-to-end (puppeteer) tests run via create-react-app's test framework.
I expected to be able to pass PUBLIC_URL to those tests via the environment so they could construct the correct URL for the app which I was serving via a separate CI step. The tests read the environment via process.env.PUBLIC_URL.
However, any test run via create-react-app has PUBLIC_URL set to "" regardless of the environment. Other environment variables work as expected.
I was in two minds whether to report this, but the existence of this issue would have saved me much confusion yesterday so even if it's not fixed I think it'll have value 😄
Did you try recovering your dependencies?
Yes, this happens in a new CRA app. See demo below.
Which terms did you search for in User Guide?
I reviewed the section on environment variables and the homepage setting. I also searched the issues for PUBLIC_URL.
Environment
Environment Info:
current version of create-react-app: 3.4.1
running from /Users/mth/.config/yarn/global/node_modules/create-react-app
Run PUBLIC_URL=test1 SOMETHING_ELSE=test2 npm run test (assumes bash shell or similar, for other environments set the environment variables as required by your system)
Note failure:
FAIL src/e2e.test.js
● can pass PUBLIC_URL
expect(received).toEqual(expected) // deep equality
Expected: "test1"
Received: ""
It took me a while to realise npm run test was causing this issue rather than some other part of my CI setup.
Expected behavior
I expected to be able to set PUBLIC_URL and have the environment variable available in jest.
I expect some initialization is preventing this as this is the default process behaviour.
Actual behavior
PUBLIC_URL is always "".
I ended up working around it by passing the same information via another environment variable.
Describe the bug
In my CI pipeline I was migrating away from the package.json homepage setting to PUBLIC_URL for more flexibility.
I have a suite of end-to-end (puppeteer) tests run via create-react-app's test framework.
I expected to be able to pass PUBLIC_URL to those tests via the environment so they could construct the correct URL for the app which I was serving via a separate CI step. The tests read the environment via process.env.PUBLIC_URL.
However, any test run via create-react-app has PUBLIC_URL set to "" regardless of the environment. Other environment variables work as expected.
I was in two minds whether to report this, but the existence of this issue would have saved me much confusion yesterday so even if it's not fixed I think it'll have value 😄
Did you try recovering your dependencies?
Yes, this happens in a new CRA app. See demo below.
Which terms did you search for in User Guide?
I reviewed the section on environment variables and the homepage setting. I also searched the issues for PUBLIC_URL.
Environment
Environment Info:
current version of create-react-app: 3.4.1
running from /Users/mth/.config/yarn/global/node_modules/create-react-app
System:
OS: macOS 11.6.1
CPU: (8) x64 Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz
Binaries:
Node: 14.18.1 - ~/.nvm/versions/node/v14.18.1/bin/node
Yarn: 1.22.17 - /usr/local/bin/yarn
npm: 6.14.15 - ~/.nvm/versions/node/v14.18.1/bin/npm
Browsers:
Chrome: 97.0.4692.99
Firefox: 96.0.2
Safari: 15.1
npmPackages:
react: ^17.0.2 => 17.0.2
react-dom: ^17.0.2 => 17.0.2
react-scripts: 5.0.0 => 5.0.0
npmGlobalPackages:
create-react-app: Not Found
Steps to reproduce
PUBLIC_URL=test1 SOMETHING_ELSE=test2 npm run test
(assumes bash shell or similar, for other environments set the environment variables as required by your system)It took me a while to realise
npm run test
was causing this issue rather than some other part of my CI setup.Expected behavior
I expected to be able to set PUBLIC_URL and have the environment variable available in jest.
I expect some initialization is preventing this as this is the default process behaviour.
Actual behavior
PUBLIC_URL is always "".
I ended up working around it by passing the same information via another environment variable.
Reproducible demo
https://github.com/microbit-matt-hillsdon/cra-public-url
See Steps to reproduce for details.
The text was updated successfully, but these errors were encountered: