6aeec90869
* Remove unneeded install command. * Update playwright Dockerfile version. Make dependabot track Dockerfile updates (#3429) * Update playwright Dockerfile version Without this commit: `npm install` runs and installs the version in package.json which was 1.39 while the preinstalled browsers targeted playwright 1.37. Now that we are relying on the already installed libraries and browsers, we can get rid of the npm install in the Dockerfile too. TODO: Modify [dependabot](https://github.com/GoogleChrome/chromium-dashboard/blob/main/.github/dependabot.yml) to update the docker image. This should help prevent package.json playwright from outpacing the docker file image. * Update dependabot.yml to track Dockerfile updates * try * final --------- Co-authored-by: James C Scott III <jcscottiii@users.noreply.github.com> |
||
---|---|---|
.devcontainer | ||
.github | ||
.vscode | ||
api | ||
client-src | ||
data | ||
framework | ||
gen | ||
internals | ||
openapi | ||
packages/playwright | ||
pages | ||
scripts | ||
static | ||
templates | ||
.babelrc | ||
.coveragerc | ||
.dockerignore | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc | ||
.gcloudignore | ||
.gitignore | ||
CODE_OF_CONDUCT.md | ||
Dockerfile | ||
LICENSE | ||
README.md | ||
app.staging.yaml | ||
app.yaml | ||
appengine_config.py | ||
config.rb | ||
cron.yaml | ||
developer-documentation.md | ||
dispatch.yaml | ||
gulpfile.babel.js | ||
hack_components.py | ||
index.yaml | ||
main.py | ||
main_test.py | ||
notifier.staging.yaml | ||
notifier.yaml | ||
openapi-documentation.md | ||
openapitools.json | ||
package-lock.json | ||
package.json | ||
playwright.config.cjs | ||
queue.yaml | ||
requirements.dev.txt | ||
requirements.txt | ||
settings.py | ||
testing_config.py |
README.md
Chrome Platform Status
Mission
chromestatus.com is the official tool used for for tracking feature launches in Blink (the browser engine that powers Chrome and many other web browsers). This tool guides feature owners through our launch process and serves as a primary source for developer information that then ripples throughout the web developer ecosystem.
Get the code
For a one-click setup that leverages devcontainers, check out the devcontainer README. Otherwise, to continue setting up locally:
git clone https://github.com/GoogleChrome/chromium-dashboard
Installation
- Install gcloud and needed components:
- Before you begin, make sure that you have a java JRE (version 8 or greater) installed. JRE is required to use the DataStore Emulator and openapi-generator-cli.
- Google App Engine SDK for Python. Make sure to select Python 3.
gcloud init
gcloud components install cloud-datastore-emulator
gcloud components install beta
- Install other developer tools commands
- node and npm.
- Gulp:
npm install --global gulp-cli
- Python virtual environment:
sudo apt install python3.10-venv
- We recommend using an older node version, e.g. node 18
- Use
node -v
to check the default node version nvm use 18
to switch to node 18
- Use
cd chromium-dashboard
- Install JS an python dependencies:
npm run setup
- Note: Whenever we make changes to package.json or requirements.txt, you will need to run
npm run clean-setup
.
- Note: Whenever we make changes to package.json or requirements.txt, you will need to run
If you encounter any error during the installation process, the section Notes (later in this README.md) may help.
Developing
To start the main server and the notifier backend, run:
npm start
Then visit http://localhost:8080/
.
To start front end code watching (sass, js lint check, babel, minify files), run
npm run watch
To run lint & lit-analyzer:
npm run lint
To run unit tests:
npm test
This will start a local datastore emulator, run unit tests, and then shut down the emulator.
To update test_html_rendering.html, modify the test_html_rendering
method in
the corresponding test file, uncomment the line that looks like:
# TESTDATA.make_golden(template_text, 'test_html_rendering.html')
Then run the test again (and maybe one more time), and then you can revert your change of the test files.
To run the Playwright visual tests (aka end-to-end tests), the command to use is:
npm run pwtests --workspace=playwright
If there are errors, they will be displayed in the console.
If you need to update any of the screenshot images, you will see differences in
the packages/playwright/test-results
directory, and if they look correct,
then you can update all images for all tests with:
npm run pwtests-update --workspace=playwright
The updated images are also added to the screenshots directory. If you change test file names, or test names, or screenshot image names, then you can manually delete the old screenshots, or simply delete all and update all.
There is no way to run just one test or test file yet, but playwright supports doing that, so we should be able to add a parameter to the test running commands.
There is some additional information for developers in developer-documentation.md.
Origin Trials
To test the functionality of this application locally that interacts with data from the Origin Trials API, an API key will need to be acquired. To do this, run the following command:
npm run dev-ot-key
Note: Only developers with access to the cr-status-staging GCP project will be able to successfully run this command. If you need to test this and you don't have access, open an issue.
Notes
-
If you get an error saying
No module named protobuf
orNo module named six
orNo module named enum
, try installing them locally withpip install six enum34 protobuf
. -
When installing the GAE SDK, make sure to get the version for python 3.
-
If you run the server locally, and then you are disconnected from your terminial window, the jobs might remain running which will prevent you from starting the server again. To work around this, use
npm run stop-emulator; npm stop
. Or, useps aux | grep gunicorn
and/orps aux | grep emulator
, then use the unixkill -9
command to terminate those jobs. -
If you need to test or debug anything to do with dependencies, you can get a clean start by running
npm run clean-setup
. -
Occasionally, the Google Cloud CLI will requires an update, which will cause a failure when trying to run the development server with
npm start
. An unrelated error messageFailed to connect to localhost port 15606 after 0 ms: Connection refused
will appear. Running thegcloud components update
command will update as needed and resolve this issue.
Blink components
Chromestatus currently gets the list of Blink components from the file hack_components.py
.
Seed the blink component owners
Visit http://localhost:8080/admin/blink/populate_blink to see the list of Blink component owners.
Debugging / settings
settings.py
contains a list
of globals for debugging and running the site locally.
Deploying
If you have uncommitted local changes, the appengine version name will end with -tainted
.
It is OK to test on staging with tainted versions, but everything should be committed
(and thus not tainted) before staging a version that can later be pushed to prod.
Note you need to have admin privileges on the cr-status-staging
and cr-status
cloud projects to be able to deploy the site.
Run the npm target:
npm run staging
Open the Google Developer Console for the staging site and flip to the new version by selecting from the list and clicking MIGRATE TRAFFIC. Make sure to do this for both the 'default' service as well as for the 'notifier' service.
Alternatively, run npm run staging-rc
to upload the same code to a version named rc
for "Release candidate". This is the only version that you can test using Google Sign-In at https://rc-dot-cr-status-staging.appspot.com
.
If manual testing on the staging server looks good, then repeat the same steps to deploy to prod:
npm run deploy
Open the Google Developer Console for the production site
The production site should only have versions that match versions on staging.
LICENSE
Copyright (c) 2013-2022 Google Inc. All rights reserved.
Apache2 License.