From b2f3a43f9f8b1eb41717731cc23a925efc693ab3 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Wed, 25 Mar 2020 14:55:29 +0000 Subject: [PATCH] Detect 'trailing' content when comparing DOMs --- test/test-pages/hidden-nodes/expected.html | 1 + test/test-pages/hukumusume/expected.html | 2 +- test/test-pages/lwn-1/expected.html | 3 +-- test/test-readability.js | 9 +++++++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/test/test-pages/hidden-nodes/expected.html b/test/test-pages/hidden-nodes/expected.html index bb0e068..b17f71d 100644 --- a/test/test-pages/hidden-nodes/expected.html +++ b/test/test-pages/hidden-nodes/expected.html @@ -1,4 +1,5 @@

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Secondary header

+

Third header

\ No newline at end of file diff --git a/test/test-pages/hukumusume/expected.html b/test/test-pages/hukumusume/expected.html index 9871087..cdae551 100644 --- a/test/test-pages/hukumusume/expected.html +++ b/test/test-pages/hukumusume/expected.html @@ -40,7 +40,7 @@

 肉をくわえたイヌが、橋を渡っていました。  ふと下を見ると、川の中にも肉をくわえたイヌがいます。 イヌはそれを見て、思いました。(あいつの肉の方が、大きそうだ)  イヌは、くやしくてたまりません。 (そうだ、あいつをおどかして、あの肉を取ってやろう)  そこでイヌは、川の中のイヌに向かって思いっきり吠えました。 「ウゥー、ワン!!」  そのとたん、くわえていた肉はポチャンと川の中に落ちてしまいました。 「ああー、ぁぁー」  川の中には、がっかりしたイヌの顔がうつっています。  さっきの川の中のイヌは、水にうつった自分の顔だったのです。  同じ物を持っていても、人が持っている物の方が良く見え、また、欲張るとけっきょく損をするというお話しです。

おしまい

-

+

前のページへ戻る

\ No newline at end of file diff --git a/test/test-pages/lwn-1/expected.html b/test/test-pages/lwn-1/expected.html index 61b8772..fbc6331 100644 --- a/test/test-pages/lwn-1/expected.html +++ b/test/test-pages/lwn-1/expected.html @@ -643,8 +643,7 @@

Next page: Security>>

- - + \ No newline at end of file diff --git a/test/test-readability.js b/test/test-readability.js index c92ae8f..3860de2 100644 --- a/test/test-readability.js +++ b/test/test-readability.js @@ -36,7 +36,8 @@ function inOrderIgnoreEmptyTextNodes(fromNode) { function traverseDOM(callback, expectedDOM, actualDOM) { var actualNode = actualDOM.documentElement || actualDOM.childNodes[0]; var expectedNode = expectedDOM.documentElement || expectedDOM.childNodes[0]; - while (actualNode) { + while (actualNode || expectedNode) { + // We'll stop if we don't have both actualNode and expectedNode if (!callback(actualNode, expectedNode)) { break; } @@ -74,6 +75,9 @@ function runTestsWithItems(label, domGenerationFn, source, expectedContent, expe it("should extract expected content", function() { function nodeStr(n) { + if (!n) { + return "(no node)"; + } if (n.nodeType == 3) { return "#text(" + htmlTransform(n.textContent) + ")"; } @@ -113,10 +117,10 @@ function runTestsWithItems(label, domGenerationFn, source, expectedContent, expe }).join(","); } + var actualDOM = domGenerationFn(result.content); var expectedDOM = domGenerationFn(expectedContent); traverseDOM(function(actualNode, expectedNode) { - expect(!!actualNode).eql(!!expectedNode); if (actualNode && expectedNode) { var actualDesc = nodeStr(actualNode); var expectedDesc = nodeStr(expectedNode); @@ -146,6 +150,7 @@ function runTestsWithItems(label, domGenerationFn, source, expectedContent, expe } } } else { + expect(nodeStr(actualNode), "Should have a node from both DOMs").eql(nodeStr(expectedNode)); return false; } return true;