Repository navigation
Soundcheck Browsers
Soundcheck runs in Chrome by default. With --browser firefox or --browser webkit it checks the site in Firefox or in WebKit (Safari's engine) instead, to catch what breaks in only one browser. This page covers picking an engine, what runs in each and how comparisons handle them. For Chrome itself (the download, the sandbox), see the FAQ.
rhythm soundcheck snapshot staging.yoursite.com --name ff --browser firefox
# …make your change…
rhythm soundcheck compare| Value | Uses |
|---|---|
chrome (default), chromium
|
an installed Chrome or Chromium, else the downloaded Chrome for Testing |
firefox |
an installed Firefox: firefox, firefox-esr, firefox-developer-edition or firefox-nightly on PATH, or /Applications/Firefox.app on macOS |
webkit, safari
|
a WebKit driver: WebKitWebDriver or WPEWebDriver (Linux) or safaridriver (macOS) |
a path, e.g. /usr/bin/google-chrome
|
that Chrome binary |
firefox=<path>, webkit=<path>
|
that engine's binary |
Engine names ignore case. Soundcheck downloads only Chrome; Firefox and WebKit must be installed. A typo stops before the run, exit 2:
rhythm soundcheck: --browser: "firefx" isn't chrome, firefox or webkit (did you mean firefox?)
Without the engine installed, the run stops with exit 3:
rhythm soundcheck: no WebKit driver found; install WebKitWebDriver (Linux) or enable safaridriver (macOS), or pass the path to it
For Firefox the message is no Firefox found; install it or pass the path to its binary. On macOS, turn safaridriver on once with safaridriver --enable.
Firefox runs headless in a throwaway profile and is driven through WebDriver BiDi. Health, visual, cache and exec run as in Chrome. The modules that work inside the page through Chrome's DevTools protocol are skipped, each with a note:
Snapshot "ff" saved; all clear - 0 errors, 0 warnings, 1 notice - 4 pages · 9s
note: speed was skipped in firefox: it needs Chrome
note: interact was skipped in firefox: it needs Chrome
| Module | Chrome | Firefox | WebKit |
|---|---|---|---|
| health | yes | yes | yes; with a classic-only driver, no console, network or status facts |
| visual | yes | yes | yes; with a classic-only driver, viewport-only screenshots |
| cache | yes | yes | yes |
| exec | yes | yes | yes |
| interact (and so echo, which records what form submits send) | yes | skipped | skipped |
| speed | yes | skipped | skipped |
| a11y, seo | yes | skipped | skipped |
| logging in | yes | skipped (the login was skipped in firefox: logging in needs Chrome) |
skipped |
Other differences you may see:
- Network errors keep the engine's words:
NS_ERROR_CONNECTION_REFUSEDwhere Chrome saysnet::ERR_CONNECTION_REFUSED. - The phone pass outside Chrome only sets the 390 x 844 window size, with no phone emulation, so
Not responsivecan't fire there. - Chrome's own console messages (CSP and mixed-content warnings from the browser) have no Firefox counterpart.
- WebKit drivers that offer only classic WebDriver can't send
-H,--cookieor--user-agentto the site alone, so each page fails withnot supported by this browserrather than sending them everywhere.
Screenshots of another engine are stored as shots/<page>-<viewport>-<engine>.png.
compare runs in the snapshot's engine unless you pass --browser, as it does for modules, levels and viewports. The settings line names it:
Settings: from snapshot "ff" (modules health,visual,cache; levels inspect,click; viewports desktop,mobile; browser firefox)
A comparison in Firefox reads like one in Chrome:
[BROKE] Page not found (404) - /about.php
fix: Restore the page, or redirect it and update links to it.
[NEW] Broken link to /about.php (404) - /, /contact.php, /shop.php
fix: Update or remove the link, or redirect the old URL.
[NEW] PHP Warning: Undefined array key "layout" - /, /contact.php, /shop.php
source: themes/acme/footer.php:42
fix: Fix the code at the source line and turn display_errors off in production so visitors never see these.
[NEW] JS error: Uncaught ReferenceError: undefinedStoreLocator is not defined - /
source: inline script
fix: Open the browser console on this page to see the full stack.
Passing another engine than the snapshot's is a change you made, listed with the others (You changed: modules health,visual,cache -> health (--modules); browser firefox -> chrome (--browser)). Screenshots and speed only compare within one engine, so the comparison warns browser engines differ (snapshot firefox, now chrome); screenshots and speed only compare in the same engine. With --strict it stops instead:
rhythm soundcheck: --strict: this comparison wouldn't use snapshot "ff"'s settings: browser firefox -> chrome (--browser)
To cover more than one browser, keep a snapshot per engine and compare each:
rhythm soundcheck snapshot staging.yoursite.com --name chrome
rhythm soundcheck snapshot staging.yoursite.com --name ff --browser firefox
# …make your change…
rhythm soundcheck compare --snapshot chrome
rhythm soundcheck compare --snapshot ffIn a fleet, a site's args may name an engine (--browser firefox) but never a path.
← Import from BackstopJS and Lost Pixel · Home · CLI reference →
rhythm · Useful ideas. Working systems. · Check only sites you own or have permission to test. Keep staging sealed (responsible use) · This wiki is published from wiki/ in the rhythm repository; suggest changes there with a pull request.
Get started
rhythm in depth
Tuner
- Overview
- Your first scan
- Reading results
- Choosing checks
- Requests and politeness
- Output and reports
- Batch scans
- Local scans
- Integrity and malware
- Changes and notifications
Tuner in depth
- Known vulnerabilities
- PHP advisories
- CI and code scanning
- GitHub Action
- Config file
- Watch and serve
- Writing checks
- Check packs
- Finding reference
- CLI reference
- Coming from Wordfence CLI or WPScan
- FAQ and troubleshooting
Soundcheck
- Overview
- Your first check
- Reading results
- Review and accept
- Discovery
- Page health
- Visual changes
- Interactions
- Forms and flows
- Cache
- Speed
- Accessibility and SEO
Soundcheck in depth
- CI
- CI baselines and PR comments
- Configuration
- Error rules and exec
- WordPress updates
- Fleet and client reports
- History
- Import from BackstopJS and Lost Pixel
- Firefox and WebKit
- CLI reference
- FAQ and troubleshooting
- Benchmark
Echo
- Overview
- Your first run
- Connectors
- Sealing staging
- Echo Inbox
- Messages and checks
- Checks and rules
- Attachments
- Actions and compare
- With Soundcheck
- Replay
- Deliverability
Echo in depth
- Docker and DDEV
- Agency hub and reports
- Schedule
- MCP server
- Conformance kit
- CI
- Configuration
- API
- CLI reference
- FAQ and troubleshooting
- Benchmark
Project