daisy / ace

Ace by DAISY, an Accessibility Checker for EPUB
MIT License
75 stars 22 forks source link

Edge case: Axe runners Electron vs. Puppeteer sometimes return different results ... browser quirk? #347

Closed danielweck closed 3 years ago

danielweck commented 3 years ago

./scripts/compareAxeRunners_VERBOSE.sh ../../EPUBs/SummerLakeRomance.epub =>

Report difference:
 {
-  dct:date: "09/04/2021, 05:59:51"
+  dct:date: "09/04/2021, 05:59:43"
   data: {
     images: [
       {
-        html: "<img src=\"images/image.jpeg\" alt=\"Picture\" class=\"calibre3\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"images/image.jpeg\" alt=\"Picture\" class=\"calibre3\" />"
       }
       {
-        html: "<img src=\"images/image.png\" alt=\"Image\" class=\"calibre4\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"images/image.png\" alt=\"Image\" class=\"calibre4\" />"
       }
       {
-        html: "<img src=\"images/image-1.png\" alt=\"Image\" class=\"calibre5\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"images/image-1.png\" alt=\"Image\" class=\"calibre5\" />"
       }
       {
-        html: "<img src=\"images/image-1.jpeg\" alt=\"Picture\" class=\"calibre6\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"images/image-1.jpeg\" alt=\"Picture\" class=\"calibre6\" />"
       }
       {
-        html: "<img src=\"images/image-2.jpeg\" alt=\"Image\" class=\"calibre7\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"images/image-2.jpeg\" alt=\"Image\" class=\"calibre7\" />"
       }
       {
-        html: "<img src=\"images/image-3.jpeg\" alt=\"Picture\" class=\"calibre8\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"images/image-3.jpeg\" alt=\"Picture\" class=\"calibre8\" />"
       }
       {
-        html: "<img src=\"images/image-4.jpeg\" alt=\"Picture\" class=\"calibre9\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"images/image-4.jpeg\" alt=\"Picture\" class=\"calibre9\" />"
       }
       ...
       ...
     ]
   }
   assertions: [
     ...
     ...
     ...
     ...
     {
       assertions: [
         {
           earl:result: {
-            html: "<span class=\"text_4\">You can get started with the first 3 books FREE </span>"
+            html: "<span xmlns=\"http://www.w3.org/1999/xhtml\" class=\"text_4\">You can get started with the first 3 books FREE </span>"
           }
         }
         {
           earl:result: {
-            html: "<span class=\"text_4\">You can get started with the first book, Oscar, FREE </span>"
+            html: "<span xmlns=\"http://www.w3.org/1999/xhtml\" class=\"text_4\">You can get started with the first book, Oscar, FREE </span>"
           }
         }
         {
           earl:result: {
-            html: "<span class=\"text_4\">You can get started with the first book, Red Wine and Roses, FREE </span>"
+            html: "<span xmlns=\"http://www.w3.org/1999/xhtml\" class=\"text_4\">You can get started with the first book, Red Wine and Roses, FREE </span>"
           }
         }
         {
           earl:result: {
-            html: "<span class=\"text_4\">The first book in the series, Mason, is available FREE </span>"
+            html: "<span xmlns=\"http://www.w3.org/1999/xhtml\" class=\"text_4\">The first book in the series, Mason, is available FREE </span>"
           }
         }
         {
           earl:result: {
-            html: "<span class=\"text_4\">SAVE 40%</span>"
+            html: "<span xmlns=\"http://www.w3.org/1999/xhtml\" class=\"text_4\">SAVE 40%</span>"
           }
         }
       ]
     }
-    {
-      @type: "earl:assertion"
-      earl:result: {
-        earl:outcome: "fail"
-      }
-      assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "Document has multiple static elements with the same id attribute: id_toc"
-            earl:pointer: {
-              cfi: [
-                "/4/4/2[id_toc]"
-                "/4/6[id_toc]"
-              ]
-              css: [
-                ".block_23 > b"
-                "body > b"
-              ]
-            }
-            html: "<b id=\"id_toc\" class=\"calibre10\"><a href=\"index_split_000.html#id_Toc532286787\" class=\"calibre1\"><span class=\"text_3\">Summer Lake Romance Boxed Set</span></a></b> <!--##--> <b id=\"id_toc\" class=\"calibre10\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "minor"
-            dct:title: "duplicate-id"
-            dct:description: "Ensures every id attribute value is unique"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/ids.html"
-              dct:title: "Identifiers"
-              dct:description: "id attribute value must be unique"
-            }
-            rulesetTags: [
-              "cat.parsing"
-              "wcag2a"
-              "wcag411"
-            ]
-          }
-        }
-      ]
-      earl:testSubject: {
-        url: "index_split_003.html"
-        dct:title: "Unknown"
-      }
-    }
     {
       earl:testSubject: {
-        url: "index_split_004.html"
+        url: "index_split_003.html"
       }
     }
+    {
+      @type: "earl:assertion"
+      earl:result: {
+        earl:outcome: "pass"
+      }
+      assertions: [
+      ]
+      earl:testSubject: {
+        url: "index_split_004.html"
+        dct:title: "Unknown"
+      }
+    }
     ...
danielweck commented 3 years ago

./scripts/compareAxeRunners_VERBOSE.sh ../../EPUBs/alice_pg28885-images.epub

=>

Report difference:
 {
-  dct:date: "09/04/2021, 06:04:17"
+  dct:date: "09/04/2021, 06:04:14"
   data: {
     images: [
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@cover.jpg\" alt=\"Cover\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@cover.jpg\" alt=\"Cover\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@endpapers.jpg\" alt=\"Endpapers\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@endpapers.jpg\" alt=\"Endpapers\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
-        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/6/2/2)"
+        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/8/2)"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@f0002-image.jpg\" alt=\"&quot;Alice&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@f0002-image.jpg\" alt=\"&quot;Alice&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
-        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/6/8/2%5Bfront%5D/2)"
+        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/14/4)"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@title.png\" alt=\"Title page\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@title.png\" alt=\"Title page\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
-        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/6/14/2)"
+        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/18/2)"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@spine.jpg\" alt=\"Book spine\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@spine.jpg\" alt=\"Book spine\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
-        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/6/40/2/2/2/2/2)"
+        location: "@public@vhost@g@gutenberg@html@files@28885@28885-h@28885-h-0.htm.html#epubcfi(/4/44/2/2/2/2/2)"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@a.png\" alt=\"A\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@a.png\" alt=\"A\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@c-quote.png\" alt=\"&quot;C\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@c-quote.png\" alt=\"&quot;C\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0015-image.png\" alt=\"Curiouser and Curiouser\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0015-image.png\" alt=\"Curiouser and Curiouser\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0022-insert2.jpg\" alt=\"The Pool of Tears\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0022-insert2.jpg\" alt=\"The Pool of Tears\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0028-insert2.jpg\" alt=\"They all crowded round it panting and asking,&quot;But who has won?&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0028-insert2.jpg\" alt=\"They all crowded round it panting and asking,&quot;But who has won?&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0030-dormouse.png\" alt=\"Alice and the Dormouse\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0030-dormouse.png\" alt=\"Alice and the Dormouse\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@i.png\" alt=\"I\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@i.png\" alt=\"I\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0036-insert2.jpg\" alt=\"Why, Mary Ann, what are you doing out here?\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0036-insert2.jpg\" alt=\"Why, Mary Ann, what are you doing out here?\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0050-insert2.jpg\" alt=\"Advice from a Caterpillar\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0050-insert2.jpg\" alt=\"Advice from a Caterpillar\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0056-image.png\" alt=\"She was frightened\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0056-image.png\" alt=\"She was frightened\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0059-image.png\" alt=\"As a tree\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0059-image.png\" alt=\"As a tree\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@f.png\" alt=\"F\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@f.png\" alt=\"F\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0067-image.png\" alt=\"The Footman and Alice\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0067-image.png\" alt=\"The Footman and Alice\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0070-insert2.jpg\" alt=\"An unusually large saucepan flew close by it, and very nearly carried it off\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0070-insert2.jpg\" alt=\"An unusually large saucepan flew close by it, and very nearly carried it off\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0074-insert2.jpg\" alt=\"It grunted again so violently that she looked down into its face in some alarm\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0074-insert2.jpg\" alt=\"It grunted again so violently that she looked down into its face in some alarm\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0075-image.png\" alt=\"Cheshire cat in a tree\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0075-image.png\" alt=\"Cheshire cat in a tree\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0079-image.png\" alt=\"Cheshire cat again\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0079-image.png\" alt=\"Cheshire cat again\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0084-insert2.jpg\" alt=\"A Mad Tea Party\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0084-insert2.jpg\" alt=\"A Mad Tea Party\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@a.png\" alt=\"A\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@a.png\" alt=\"A\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0100-insert2.jpg\" alt=\"The Queen turned angrily away from him and said to the Knave, &quot;Turn them over&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0100-insert2.jpg\" alt=\"The Queen turned angrily away from him and said to the Knave, &quot;Turn them over&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0103-image.png\" alt=\"Playing croquet\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0103-image.png\" alt=\"Playing croquet\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0106-image.png\" alt=\"The cat\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0106-image.png\" alt=\"The cat\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0109-image.png\" alt=\"The Executioner\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0109-image.png\" alt=\"The Executioner\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@y-quote.png\" alt=\"&quot;Y\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@y-quote.png\" alt=\"&quot;Y\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0116-insert2.jpg\" alt=\"The Queen never left off quarrelling with the other players, and shouting &quot;Off with his head!&quot; or, &quot;Off with her head!&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0116-insert2.jpg\" alt=\"The Queen never left off quarrelling with the other players, and shouting &quot;Off with his head!&quot; or, &quot;Off with her head!&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0119-image.png\" alt=\"Gryphon\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0119-image.png\" alt=\"Gryphon\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0132-insert2.jpg\" alt=\"The Mock Turtle drew a long breath and said, &quot;That's very curious&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0132-insert2.jpg\" alt=\"The Mock Turtle drew a long breath and said, &quot;That's very curious&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0136-image.png\" alt=\"Mock turtle\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0136-image.png\" alt=\"Mock turtle\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@t.png\" alt=\"T\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0140-insert2.jpg\" alt=\"Who stole the tarts?\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0140-insert2.jpg\" alt=\"Who stole the tarts?\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0149-image.jpg\" alt=\"Cook\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0149-image.jpg\" alt=\"Cook\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@h-quote.png\" alt=\"&quot;H\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@h-quote.png\" alt=\"&quot;H\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
       {
-        html: "<img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0158-insert2.jpg\" alt=\"At this the whole pack rose up into the air, and came flying down upon her\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\">"
+        html: "<img xmlns=\"http://www.w3.org/1999/xhtml\" src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@p0158-insert2.jpg\" alt=\"At this the whole pack rose up into the air, and came flying down upon her\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\" />"
       }
     ]
   }
   assertions: [
     ...
     ...
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "Document has multiple static elements with the same id attribute: front"
-            earl:pointer: {
-              cfi: [
-                "/4/6/8/2[front]"
-                "/4/6/10[front]"
-                "/4/6/12/2[front]"
-              ]
-              css: [
-                ".c3 > a"
-                ".c1 > a"
-                "p:nth-child(6) > a:nth-child(1)"
-              ]
-            }
-            html: "<a id=\"front\"> <img src=\"@public@vhost@g@gutenberg@html@files@28885@28885-h@images@f0002-image.jpg\" alt=\"&quot;Alice&quot;\" title=\"\" tag=\"{http://www.w3.org/1999/xhtml}img\"></a> <!--##--> <a id=\"front\">\n</a> <!--##--> <a id=\"front\"></a>"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "minor"
-            dct:title: "duplicate-id"
-            dct:description: "Ensures every id attribute value is unique"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/ids.html"
-              dct:title: "Identifiers"
-              dct:description: "id attribute value must be unique"
-            }
-            rulesetTags: [
-              "cat.parsing"
-              "wcag2a"
-              "wcag411"
-            ]
-          }
-        }
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
     {
       earl:result: {
-        earl:outcome: "fail"
+        earl:outcome: "pass"
       }
       assertions: [
-        {
-          @type: "earl:assertion"
-          earl:result: {
-            earl:outcome: "fail"
-            dct:description: "The xml:lang attribute is not valid on HTML pages, use the lang attribute."
-            earl:pointer: {
-              cfi: [
-                "/"
-              ]
-              css: [
-                "html"
-              ]
-            }
-            html: "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">"
-          }
-          earl:assertedBy: "aXe"
-          earl:mode: "automatic"
-          earl:test: {
-            earl:impact: "serious"
-            dct:title: "html-has-lang"
-            dct:description: "Ensures every HTML document has a lang attribute"
-            help: {
-              url: "http://kb.daisy.org/publishing/docs/html/lang.html"
-              dct:title: "Language"
-              dct:description: "<html> element must have a lang attribute"
-            }
-            rulesetTags: [
-              "cat.language"
-              "wcag2a"
-              "wcag311"
-              "ACT"
-            ]
-          }
-        }
       ]
     }
   ]
 }
danielweck commented 3 years ago

In the diff snippets above, the green markers are the Electron Axe runner, which returns XML namespace xmlns="http://www.w3.org/1999/xhtml", whereas the Puppeteer Axe runner does not. Does this explain why Axe in the Electron runner completely skips violations (only return passes)

danielweck commented 3 years ago

Compare with ./scripts/compareAxeRunners_VERBOSE.sh ../../EPUBs/georgia-pls-ssml.epub which returns correct XHTML in both runners (in other words, Axe in Electron seems to be doing the correct strict markup parsing, not Puppeteer?):

Report difference:
 {
-  dct:date: "09/04/2021, 06:21:38"
+  dct:date: "09/04/2021, 06:21:36"
 }
danielweck commented 3 years ago

Fixed:

./scripts/compareAxeRunners.sh ../../EPUBs/SummerLakeRomance.epub

PuppeteerAxeRunner ...
>>> ACE PERF: 13 seconds + 937548440 nanoseconds
ElectronAxeRunner ...
>>> ACE PERF: 7 seconds + 646390225 nanoseconds
Report difference:
 {
-  dct:date: "09/04/2021, 07:46:14"
+  dct:date: "09/04/2021, 07:46:29"
 }
danielweck commented 3 years ago

Fixed:

./scripts/compareAxeRunners.sh ../../EPUBs/alice_pg28885-images.epub

PuppeteerAxeRunner ...
>>> ACE PERF: 2 seconds + 923420809 nanoseconds
ElectronAxeRunner ...
>>> ACE PERF: 2 seconds + 462222498 nanoseconds
Report difference:
 {
-  dct:date: "09/04/2021, 07:48:36"
+  dct:date: "09/04/2021, 07:48:40"
 }
danielweck commented 3 years ago

Fixed via https://github.com/daisy/ace/commit/c035fa90a8af728908e67b3ab59cfb5428d15c26