# Not enabled by default on some ports
Mutation

# Unstable SVG page loading tests
PageLoad/svg/files/33041-Samurai.svg

# Takes too long to load
PageLoad/svg/files/Sierpinski_carpet_6.svg

PageLoad/svg/files/az-lizard_benji_park_01.svg
PageLoad/svg/files/france.svg
PageLoad/svg/files/francobollo_gnome_ezechi_02.svg
PageLoad/svg/files/gearflowers.svg
PageLoad/svg/files/hereGear4.svg

# Takes 22s on MacBookPro
PageLoad/svg/files/mtsthelens.svg

# Do not conform to WebKit or Chromium perf test styles
SunSpider
XSSAuditor

# We have pure JS tests separately outside Dromaeo.
Dromaeo/sunspider-3d-morph.html
Dromaeo/sunspider-3d-raytrace.html
Dromaeo/sunspider-access-binary-trees.html
Dromaeo/sunspider-access-fannkuch.html
Dromaeo/sunspider-access-nbody.html
Dromaeo/sunspider-access-nsieve.html
Dromaeo/sunspider-bitops-3bit-bits-in-byte.html
Dromaeo/sunspider-bitops-bits-in-byte.html
Dromaeo/sunspider-bitops-bitwise-and.html
Dromaeo/sunspider-bitops-nsieve-bits.html
Dromaeo/sunspider-controlflow-recursive.html
Dromaeo/sunspider-crypto-aes.html
Dromaeo/sunspider-date-format-tofte.html
Dromaeo/sunspider-date-format-xparb.html
Dromaeo/sunspider-math-cordic.html
Dromaeo/sunspider-math-partial-sums.html
Dromaeo/sunspider-math-spectral-norm.html
Dromaeo/sunspider-regexp-dna.html
Dromaeo/sunspider-string-fasta.html
Dromaeo/sunspider-string-tagcloud.html
Dromaeo/sunspider-string-unpack-code.html
Dromaeo/sunspider-string-validate-input.html
Dromaeo/v8-crypto.html
Dromaeo/v8-deltablue.html
Dromaeo/v8-earley-boyer.html
Dromaeo/v8-raytrace.html
Dromaeo/v8-richards.html

# Bug 77024 - Web Inspector: tests in PerformanceTests/inspector/ are timing out
inspector

