The shared test runner logic was reimplementing parts of Mocha, in particular the test logging and filtering. Moreover, it was booting the hosted mode server and puppeteer outside of Mocha. Mocha supports root level hooks [1]. These hooks allow us to perform work before a test starts. Moreover, by using the before and after hook, we can run logic before and after all tests. By using these hooks, we can extract the "boot the hosted mode server and hookup puppeteer" part to these root hooks. Additionally, we can reset the pages in the `beforeEach`, which means that tests themselves don't have to reset the pages. We also put the implementation code into third_party/conductor, as we would like to reuse this logic for the Puppeteer tests. The Puppeteer test suite now also uses Mocha and has very similar requirements as to our DevTools tests. By extracting from DevTools, we can look into expanding the test runner to other usecases, but that is out of scope for now. [1]: https://mochajs.org/#root-level-hooks Bug: 1071369 Change-Id: Ie9f954359d9de84da564b74b6f5517dd535db008 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2150458 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Paul Lewis <aerotwist@chromium.org>
DevTools Scripts
Development workflow scripts
These are scripts that can be useful to run independently as you're working on Chrome DevTools front-end.
The newer scripts such as for testing and hosted mode are written in Node.js, which has become the standard toolchain for web apps. The older scripts such as building (e.g. bundling and minifying) are written in Python, which has first-class support in Chromium's infrastructure.
Overview
Folders
- build - Python package for generating DevTools debug and release mode
- chrome_debug_launcher - automagically finds Chrome Canary and launches it with debugging flags (e.g. remote debugging port)
- closure - see section on Closure Compiler below
- gulp - experimental build process written in node.js & gulp to remove the dependency on Chromium-specific build tools (i.e. gn and ninja)
- hosted_mode - run DevTools on a localhost development server
- jsdoc_validator - enforces the use of Closure type annotations
Python Scripts
- compile_frontend.py - runs closure compiler to do static type analysis
- Note: the compiled outputs are not actually used to run DevTools
- lint_javascript.py - run eslint
- optimize_svg_images.py - manually run when changing svg images
Node.js scripts
The easiest way to run the node.js scripts is to use npm run which displays all the commands. For more information on the specific npm run commands, take a look at the primary devtools front-end readme (../readme.md).
Closure
DevTools manually rolls the closure compiler to ./closure. If you manually roll closure compiler, you will need to re-generate the closure_runner (in ./closure) and jsdoc_validator custom jars using the python scripts in their respective directory.