canarytrace / documentation

Plug’n'Play stack for testing and monitoring web applications from user perspective.
http://canarytrace.com
5 stars 0 forks source link

Rules: definition of internal default rules #46

Closed rdpanek closed 3 years ago

rdpanek commented 3 years ago

IDEA

Canarytrace Listener will be automatically check the rules of quality a web application.

Sources:

rdpanek commented 3 years ago

CSS & JS

Tomas-Kostka commented 3 years ago

HTTP/2

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

Brotli text/plain compression

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

HPACK compression for HTTP/2

Verifiable by Listener :question:
Tomas-Kostka commented 3 years ago

HTTP/2 Server Push - NOT recommended

Verifiable by Listener :question:
Tomas-Kostka commented 3 years ago

HTTP/3

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

Response code 404

Verifiable by Listener :heavy_check_mark:
Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

well known (or suspicious) - low-hanging fruits

Tomas-Kostka commented 3 years ago

Never more 404 on favicon.ico

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

LCP (Largest Contentful Paint) < 2.5s

-- see https://web.dev/vitals/#core-web-vitals

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

FID (First Input Delay) < 100ms

-- see https://web.dev/vitals/#core-web-vitals

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

CLS (Cumulative Layout Shift) < 0.1

-- see https://web.dev/vitals/#core-web-vitals

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

Removed unused CSS/JavaScript.

Verifiable by Listener :question:
Tomas-Kostka commented 3 years ago

Constrained the impact of third-party scripts

Verifiable by Listener :x:
Tomas-Kostka commented 3 years ago

HTTP headers set properly

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

use defer instead of async to load critical JavaScript asynchronously

Verifiable by Listener :x:
Tomas-Kostka commented 3 years ago

Not use BOTH async and defer

Verifiable by Listener :x:
Tomas-Kostka commented 3 years ago

used resource hints to speed up delivery

Verifiable by Listener :x:
Tomas-Kostka commented 3 years ago

assets cached in a service worker cache (ToDo)

Verifiable by Listener :question:
Tomas-Kostka commented 3 years ago

Optimized images

Tomas-Kostka commented 3 years ago

budget for critical-path resources (CSS, JS, HTML, and data) should be max. 170KB gzipped

Verifiable by Listener :heavy_check_mark:
Tomas-Kostka commented 3 years ago

Serve legacy code only to legacy browsers

Verifiable by Listener :x:
rdpanek commented 3 years ago

Final table

# title Index Condition Min count /hour Score
1 Failed check your page! c.report test step failed 2 10
2 Encoding of response with Javascript files must contains gzip or brotli compression. c.response gzip or br missing in headers.content-encoding 10 40
3 Encoding of response with CSS files must contains gzip or brotli compression. c.response gzip or br missing in headers.content-encoding 10 40
4 Higher response time. c.performance-entries > 3000ms 10 40
5 WebVitals LCP exceeded. c.audit > 2500ms 5 40
6 WebVitals TTI exceeded. c.audit > 5000ms 5 40
7 WebVitals CLS exceeded. c.audit > 0.1 5 40
8 LoadEventEnd exceeded. c.performance-entries > 4000ms 5 40