Avoid setTimeout in waitOnElement (#321)

waitOnElement uses a 50ms timeout, which was historically motivated by FlightJS that used requirejs which had a hard-coded 50ms pause.

We've observed fragile CPU scaling behavior with this approach in Speedometer 2.1. V3.0 is less affected by this since the perf-dashboard is the only workload the regularly needs another cycle to wait (all other workloads are ready after onload has fired).

Using rAF lowers the timeout limit and is more realistic in required CPU ramp-up performance.
1 file changed
tree: 55d556733238c4343305346464c2caa91cd88ca9
  1. .github/
  2. resources/
  3. tests/
  4. .eslintignore
  5. .eslintrc
  6. .gitignore
  7. .npmrc
  8. .prettierignore
  9. .prettierrc
  10. babel.config.json
  11. Development.md
  12. Governance.md
  13. index.html
  14. InteractiveRunner.html
  15. LICENSE
  16. package-lock.json
  17. package.json
  18. README.md
  19. Testing.md
README.md
:warning: Speedometer 3 is in active development and is unstable. You can follow along with development in this repository, but see Speedometer 2.1 for the latest stable version.

What is Speedometer?

Speedometer is a benchmark for web browsers that measures Web application responsiveness by timing simulated user interactions on various workloads. Our primary goal is to make it reflect the real-world Web as much as possible. When a browser improves its score on the benchmark, actual users should benefit. In order to achieve this, it should:

  • Test end-to-end user journeys instead of testing specific features in a tight loop. Each test should exercise the full set of what’s needed from the engine in order for a user to accomplish a task.
  • Evolve over time, adapting to the present Web on a regular basis. This should be informed by current usage data, and by consensus about features which are important for engines to optimize to provide a consistent experience for users and site authors.
  • Be accessible to the public and useful to browser engineers. It should run in every modern browser by visiting a normal web page. It should run relatively quickly, while providing enough test coverage to be reflective of the real-world Web.