To develop the frontend you can use a proxy to run image-builder-frontend locally against the chrome and backend at console.redhat.com.
Working against the production environment is preferred, as any work can be released without worrying if a feature from stage has been released yet.
Make sure you have npm@7 and node 15+ installed. If you need multiple versions of nodejs check out nvm.
-
run
npm ci
-
run
npm run prod-beta
. This command uses a prod-beta env by default. Configure your environment by theenv
attribute indev.webpack.config.js
. -
Secondly redirect a few
prod.foo.redhat.com
to localhost, if this has not been done already.
echo "127.0.0.1 prod.foo.redhat.com" >> /etc/hosts
- open browser at
https://prod.foo.redhat.com:1337/beta/insights/image-builder
-
run
npm ci
-
run
npm run stage-beta
. This command uses a stage-beta env by default. Configure your environment by theenv
attribute indev.webpack.config.js
. -
Secondly redirect a few
stage.foo.redhat.com
to localhost, if this has not been done already.
echo "127.0.0.1 stage.foo.redhat.com" >> /etc/hosts
- open browser at
https://stage.foo.redhat.com:1337/beta/insights/image-builder
-
Clone the insights proxy: https://github.com/RedHatInsights/insights-proxy
-
Setting up the proxy
Choose a runner (podman or docker), and point the SPANDX_CONFIG variable to
profile/local-frontend.js
included in image-builder-frontend.sudo insights-proxy/scripts/patch-etc-hosts.sh export RUNNER="podman" export SPANDX_CONFIG=$PATH_TO/image-builder-frontend/profiles/local-frontend.js sudo -E insights-proxy/scripts/run.sh
-
Starting up image-builder-frontend
In the image-builder-frontend checkout directory
npm install npm start
The UI should be running on https://prod.foo.redhat.com:1337/beta/insights/image-builder/landing. Note that this requires you to have access to either production or stage (plus VPN and proxy config) of insights.
To develop both the frontend and the backend you can again use the proxy to run both the frontend and backend locally against the chrome at cloud.redhat.com. For instructions see devel/README.md.
Directory | Description |
---|---|
/config |
webpack configuration |
/devel |
tools for local development |
/src |
source code |
/src/Components |
source code split by individual components |
/src/test |
test utilities |
/src/test/mocks |
mock handlers and server config for MSW |
/src/store |
Redux store |
/src/api.js |
API calls |
/src/store/apiSlice.js |
RTK Query calls |
This project uses eslint's recommended styling guidelines. These rules can be found here: https://eslint.org/docs/rules/
To run the linter, use:
npm run lint
Any errors that can be fixed automatically, can be corrected by running:
npm run lint --fix
All the linting rules and configuration of eslint can be found in .eslintrc.yml
.
There are also additional rules added to enforce code style. Those being:
import/order
-> enforces the order in import statements and separates them into groups based on their typeprefer-const
-> enforces use ofconst
declaration for variables that are never reassignedno-console
-> throws an error for any calls ofconsole
methods leftover after debugging
This project is tested using the Jest framework, React Testing Library, and the Mock Service Worker library.
All UI contributions must also include a new test or update an existing test in order to maintain code coverage.
To run the unit tests, the linter, and the code coverage check run:
npm run test
These tests will also be run in our Travis CI when a PR is opened.