Pony Foo

https://ponyfoo.com/
Read the latest about JavaScript, ES6, and ECMAScript proposals on TC39. Follow the Pony Foo Weekly newsletter to stay on top of interesting and trending topics around the web platform.
Added 10 days ago, Updated 18 hours ago

LIGHTHOUSE 82

Lighthouse version2.8.0
Performance48
First meaningful paint99
First Interactive (beta)36
Consistently Interactive (beta)22
Perceptual Speed Index15
Estimated Input Latency14
Reduce render-blocking stylesheets100
Reduce render-blocking scripts100
Properly size images0
Offscreen images0
Minify CSS100
Minify JavaScript100
Unused CSS rules90
Optimize images100
Serve images in next-gen formats0
Enable text compression100
Keep server response times low (TTFB)true
Avoids page redirects100
Has enormous network payloads25
Uses inefficient cache policy on static assets59
Uses an excessive DOM size98
Critical Request Chainsfalse
User Timing marks and measurestrue
JavaScript boot-up timetrue
Screenshot Thumbnails100
Main thread work breakdownfalse
Progressive Web App82
Registers a service workertrue
Responds with a 200 when offlinetrue
Contains some content when JavaScript is not availabletrue
Uses HTTPStrue
Redirects HTTP traffic to HTTPStrue
Page load is not fast enough on 3Gfalse
User can be prompted to Install the Web Apptrue
Is not configured for a custom splash screenfalse
Address bar matches brand colorstrue
Has a `<meta name="viewport">` tag with `width` or `initial-scale`true
Content is sized correctly for the viewporttrue
Site works cross-browserfalse
Page transitions don't feel like they block on the networkfalse
Each page has a URLfalse
Accessibility71
`[accesskey]` values are not uniquefalse
`[aria-*]` attributes match their rolestrue
`[role]`s do not have all required `[aria-*]` attributesfalse
Elements with `[role]` that require specific children `[role]`s, are missing.false
`[role]`s are not contained by their required parent elementfalse
`[role]` values are not validfalse
`[aria-*]` attributes have valid valuestrue
`[aria-*]` attributes are valid and not misspelledtrue
`<audio>` elements are missing a `<track>` element with `[kind="captions"]`.false
Buttons have an accessible nametrue
The page contains a heading, skip link, or landmark regiontrue
Background and foreground colors do not have a sufficient contrast ratio.false
`<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>` or `<template>` elements.false
Definition list items are not wrapped in `<dl>` elementsfalse
Document has a `<title>` elementtrue
`[id]` attributes on the page are uniquetrue
`<frame>` or `<iframe>` elements do not have a titlefalse
`<html>` element has a `[lang]` attributetrue
`<html>` element has a valid value for its `[lang]` attributetrue
Image elements have `[alt]` attributestrue
`<input type="image">` elements do not have `[alt]` textfalse
Form elements do not have associated labelsfalse
Presentational `<table>` elements do not avoid using `<th>`, `<caption>` or the `[summary]` attribute.false
Links do not have a discernable namefalse
Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).true
List items (`<li>`) are contained within `<ul>` or `<ol>` parent elementstrue
The document uses `<meta http-equiv="refresh">`false
`[user-scalable="no"]` is not used in the `<meta name="viewport">` element and the `[maximum-scale]` attribute is not less than 5.true
`<object>` elements do not have `[alt]` textfalse
Some elements have a `[tabindex]` value greater than 0false
Cells in a `<table>` element that use the `[headers]` attribute refers to other cells of that same table.false
`<th>` elements and elements with `[role="columnheader"/"rowheader"]` do not have data cells they describe.false
`[lang]` attributes do not have a valid valuefalse
`<video>` elements do not contain a `<track>` element with `[kind="captions"]`.false
`<video>` elements do not contain a `<track>` element with `[kind="description"]`.false
The page has a logical tab orderfalse
Interactive controls are keyboard focusablefalse
The user's focus is directed to new content added to the pagefalse
User focus is not accidentally trapped in a regionfalse
Custom controls have associated labelsfalse
Custom controls have ARIA rolesfalse
Visual order on the page follows DOM orderfalse
Offscreen content is hidden from assistive technologyfalse
Headings don't skip levelsfalse
HTML5 landmark elements are used to improve navigationfalse
Best Practices88
Avoids Application Cachetrue
Avoids WebSQL DBtrue
Uses HTTPStrue
Uses HTTP/2 for its own resourcestrue
Uses passive listeners to improve scrolling performancetrue
Avoids Mutation Events in its own scriptstrue
Avoids `document.write()`true
Does not open external anchors using `rel="noopener"`false
Avoids requesting the geolocation permission on page loadtrue
Avoids front-end JavaScript libraries with known security vulnerabilitiestrue
Avoids requesting the notification permission on page loadtrue
Avoids deprecated APIstrue
Manifest's `short_name` won't be truncated when displayed on homescreentrue
Allows users to paste into password fieldstrue
No browser errors logged to the consoletrue
Displays images with incorrect aspect ratiofalse
SEO90
Has a `<meta name="viewport">` tag with `width` or `initial-scale`true
Document has a `<title>` elementtrue
Document has a meta descriptiontrue
Page has successful HTTP status codetrue
Links do not have descriptive textfalse
Page isn’t blocked from indexingtrue
Document has a valid `hreflang`true
Document has a valid `rel=canonical`true
Document uses legible font sizestrue
Document avoids pluginstrue
Page is mobile friendlyfalse
Structured data is validfalse

WebPageTest

PageSpeed Insights

MANIFEST

{
  "short_name": "Pony Foo",
  "name": "Pony Foo",
  "start_url": "/",
  "display": "standalone",
  "orientation": "portrait",
  "lang": "en",
  "theme_color": "#333333",
  "background_color": "#fcfcfc",
  "icons": [
    {
      "src": "/android-chrome-36x36.png",
      "sizes": "36x36",
      "type": "image/png",
      "density": 0.75
    },
    {
      "src": "/android-chrome-48x48.png",
      "sizes": "48x48",
      "type": "image/png",
      "density": 1
    },
    {
      "src": "/android-chrome-72x72.png",
      "sizes": "72x72",
      "type": "image/png",
      "density": 1.5
    },
    {
      "src": "/android-chrome-96x96.png",
      "sizes": "96x96",
      "type": "image/png",
      "density": 2
    },
    {
      "src": "/android-chrome-144x144.png",
      "sizes": "144x144",
      "type": "image/png",
      "density": 3
    },
    {
      "src": "/android-chrome-192x192.png",
      "sizes": "192x192",
      "type": "image/png",
      "density": 4
    }
  ]
}