Code Monkey home page Code Monkey logo

chromium-dashboard's Introduction

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

  1. Install gcloud and needed components:
    1. 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.
    2. Google App Engine SDK for Python. Make sure to select Python 3.
    3. gcloud init
    4. gcloud components install cloud-datastore-emulator
    5. gcloud components install beta
  2. Install other developer tools commands
    1. node and npm.
    2. Gulp: npm install --global gulp-cli
    3. Python virtual environment: sudo apt install python3.11-venv
  3. We recommend using an older node version, e.g. node 18
    1. Use node -v to check the default node version
    2. nvm use 18 to switch to node 18
  4. cd chromium-dashboard
  5. Install JS an python dependencies: npm run setup
    1. Note: Whenever we make changes to package.json or requirements.txt, you will need to run npm run clean-setup.

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. Images that did not need to be updated do not show up as having been changed. If you change the test file names, or the test method names, or the screenshot image file names, then new files will be generated, and you will need to manually delete the old files. You could simply delete all screenshots and update all, but that will take a fairly long time.

You can update images for just one test file by adding --filename=some_pwtest.js to the pwtests-update command. The some_pwtest.js name does not need to be a full path.

If there are error reported by the GitHub CI playwright action, you can look at the error log, but if the problem is a difference in some of the images, you should probably download the artifact .zip file containing all the differences.

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 or No module named six or No module named enum , try installing them locally with pip 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, use ps aux | grep gunicorn and/or ps aux | grep emulator, then use the unix kill -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 message Failed to connect to localhost port 15606 after 0 ms: Connection refused will appear. Running the gcloud 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.

Analytics

chromium-dashboard's People

Contributors

aglaforge avatar beaufortfrancois avatar crypticwizard avatar cwilso avatar danielryansmith avatar dependabot[bot] avatar dlaliberte avatar ebidel avatar foolip avatar jcscottiii avatar jeffposnick avatar jpchase avatar jpmedley avatar jrobbins avatar jrobbins-at-chromium avatar jstenback avatar jyasskin avatar kevinshen56714 avatar kyleju avatar liyangguang avatar mathiasbynens avatar maxh avatar mdittmer avatar phistuck avatar pingren avatar rbyers avatar sethladd avatar shivamag00 avatar spectre-ak avatar yanndago avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chromium-dashboard's Issues

P1: Key should better explain what colors mean

[ green dot ] \t low compatibility risk \t what this means for web dev \t what this means for vendors

[ red dot ] \t high compatibility risk \t what this means for web dev \t what this means for vendors

P2: Filtering should rerender first feature of milestone labels

Because of the way these labels are generated, it's possibly that a feature is incorrectly categorized under a version. The labels are turned on for the very first feature of a milestone, but filtering changes this list.

screen shot 2013-08-07 at 8 10 02 pm

In the example, template is chrome 26, but it's labeled under 27

Add milestone / status separators in scroll list

Right now when you click on M29, the first feature that landed in M29 appears at the top of the list. But it's hard to tell where the last M29 feature is and the M28 features start.

It'd be good to break up the list like this:

...
--- 29 ----
Feature name1
Feature name2
--- 28 ----
Feature name3
...

P3: Better aggregate "citizenship" view of feature colors

The spreadsheet is a cluttered mess, but the one thing it has over this replacement is that it's easy to visualize the citizenship of the whole project at a glance, because you can see so many green/red cells and if you squint you get a good overall feel--kind of like how a sparkline can help you understand general trends even if the specific data points are too small to understand.

We should figure out how to add an aggregate view to the new dashboard.

Tagline sounds strange.

"Chromium Dashboard: a status of what we're up to" sounds strange to my eyes. :)

How about cutting it to "what we're up to"?

Make the categories links to filter on

For example, in the "Web Animations/Graphics" title at the top of a chip, I would like to click "Graphics" and get a filtered list of all of the Graphics features.

P1: Safari is broken

I'm seeing a few weird rendering bugs in Safari.

Issues:

  1. the filtering search box doesn't work. The filtered feature count updates, but the list is not re-rendered properly.
  2. toggling a feature opens it, where the rest of the template is activated (e.g. it's under <template if="{{open}}">. Safari refuses to render that content when open == true.
  3. "In development" should be selected on the left nav when the page loads.

...everything is working correctly in Webkit Nightly and FF.

Also, when the inspector is open everything renders fine. Weird!

a11y: Items in the feature list aren't focusable.

Tabbing through the document should eventually land me on the clickable feature list. It currently doesn't, as each item is just a flat <div>. I'd suggest adding "tabindex='0'" to each element that you expect folks to interact with (or changing them to use something which is natively focusable, like <a> or <button>).

As a second step, it would be good to ensure that they're interactwithable (yes, that's a word now) via the keyboard. :)

Thanks!

-mike

P3: Clicking anywhere on a feature's box should expand the box

Right now, the feature view is only expanded if you click on the feature's name or category. Clicking anywhere on the box should open it.

To close the box, the right behavior is less clear to me. The current behavior seems fine, but users could be confused that clicking on the description twice doesn't open and then close the box. For that reason, I think we should make the "close box" click target bigger too.

P3: Generate launch tracking bugs

From https://code.google.com/p/support/wiki/IssueTracker#Issue_entry :

The following fields can be pre-populated with a value supplied in the URL. Using links with these query parameters present allows you to guide end-users to enter an issue that is tailored to a specific need. Usually defining a template and specifying just a template value is better than specifying other values in a URL. The user must still review, edit, and submit the form.

Form field | URL query parameter | Values
Template | template | Name of a defined template in this project
Summary | summary | Initial summary string
Description | comment | Prompt text to show in issue description area
Status | status | Initial status value
Owner | owner | Username of initial issue owner
CC | cc | List of users to CC
Labels | labels | Comma-separated list of initial label values
Branch | branch | Initial branch path to use for code review requests

template : OWP Launch Tracking
summary : {feature description}
comment : defined here
status : Started
owner : {first owner email address}
cc : {other owner email addresses}
labels : I think this will be filled in by the template
branch : n/a

Example:
https://code.google.com/p/chromium/issues/entry?template=OWP%20Launch%20Tracking&summary={{feature.summary}}&status=Started&[email protected]&comment=body%20of%20intent%20template

What these look like in the wild is something like:
https://code.google.com/p/chromium/issues/detail?id=243345

New more interactive UI

There's been a few ideas around a more rich visualization. Also filtering and viewing the standardization side or the implementation side.

If anyone is interested, here would be a good place to throw out some ideas of what we could do and how to do it.

Find sane ordering of features

The best ordering would correspond to the column on the left (ie so "started" features appear first), but we might do alphabetical because it's easier to implement.

Move "Launch Bug" link

image

Currently, the launch bug link is positioned immediately below the "Implementation Status" header. This is confusing because it reads as "Implementation Status: Launch Bug."

It should be moved to the end of the list, so that the actual implementation status appears first in the list, and reads as, for example: "Implementation Status: Started."

RSS feeds and email notifications

Chromium Dashboard users should be able to 1) sign up for emails or 2) subscribe to RSS feeds for changes to:

  • P0: Everything on the dashboard (analogous to email notifications on the current spreadsheet)
  • P1: Specific entries (e.g. someone might only care about Shadow DOM)
  • P2: Categories (e.g. someone might only care about Web Components)

Search box should not move

Right now the search box moves when the number of web platform features changes:

Web Platform Features (100) [ Search Box ]
Web Platform Features (10) [ Search Box ]
Web Platform Features (1) [ Search Box ]

Ideally, the search box's position would remain fixed.

Added features don't show up until another item is saved

In v2, when you create a new record in the Admin view, it doesn't show up in the list view until you edit or create ANOTHER record.

If you flush memcache manually and refresh, the record shows up even without creating or modifying another record.

P0: Make the left column an index of location in the scroll list

image

Items on the left (under "Builds") are not really builds, but a mix of implementation status and builds, which can be confusing. For example, users might expect clicking on "28 Stable" to show all features in Stable, but it only shows new features in that build. I think this could be expressed better. See specific proposal below.

I think http://html5please.com/ does this well.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.