From 5fa210459ad05f1c894aca37da0cef7572c6209b Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sun, 3 Mar 2024 18:35:02 +0100 Subject: [PATCH 1/3] Port `parseCompareElementsCssInner` to validator --- src/commands/compare.js | 93 +++++++++++++---------------------------- src/validator.js | 12 ++++++ 2 files changed, 40 insertions(+), 65 deletions(-) diff --git a/src/commands/compare.js b/src/commands/compare.js index a90967101..32506cb25 100644 --- a/src/commands/compare.js +++ b/src/commands/compare.js @@ -69,7 +69,6 @@ function parseCompareElementsTextFalse(parser) { return parseCompareElementsTextInner(parser, true); } -// * ("CSS selector 1" | "XPath 1", "CSS selector 2" | "XPath 2, ["attr"]) function parseCompareElementsAttributeInner(parser, assertFalse) { const operators = ['<', '<=', '>', '>=', '=']; const ret = validator(parser, @@ -160,6 +159,7 @@ ${indentString(comparison, 1)} // Possible inputs: // // * ("CSS selector 1" | "XPath 1", "CSS selector 2" | "XPath 2, ["attr"]) +// * ("CSS selector 1" | "XPath 1", "CSS selector 2" | "XPath 2, ["attr"], "operator") function parseCompareElementsAttribute(parser) { return parseCompareElementsAttributeInner(parser, false); } @@ -167,61 +167,42 @@ function parseCompareElementsAttribute(parser) { // Possible inputs: // // * ("CSS selector 1" | "XPath 1", "CSS selector 2" | "XPath 2", ["attr"]) +// * ("CSS selector 1" | "XPath 1", "CSS selector 2" | "XPath 2, ["attr"], "operator") function parseCompareElementsAttributeFalse(parser) { return parseCompareElementsAttributeInner(parser, true); } +// * ("CSS selector 1" | "XPath 1", "CSS selector 2" | "XPath 2, ["CSS properties"]) function parseCompareElementsCssInner(parser, assertFalse) { - const elems = parser.elems; - - if (elems.length === 0) { - return {'error': 'expected a tuple, found nothing'}; - } else if (elems.length !== 1 || elems[0].kind !== 'tuple') { - return { - 'error': `expected a tuple, found \`${parser.getRawArgs()}\``, - }; - } - const tuple = elems[0].getRaw(); - if (tuple.length !== 3) { - let err = `expected 3 elements in the tuple, found ${tuple.length} element`; - if (tuple.length > 1) { - err += 's'; - } - return {'error': err}; - } else if (tuple[0].kind !== 'string') { - return { - 'error': 'expected first argument to be a CSS selector or an XPath, ' + - `found ${tuple[0].getArticleKind()}`, - }; - } else if (tuple[1].kind !== 'string') { - return { - 'error': 'expected second argument to be a CSS selector or an XPath, ' + - `found ${tuple[1].getArticleKind()}`, - }; - } else if (tuple[2].kind !== 'array') { - return { - 'error': 'expected third argument to be an array of string, ' + - `found ${tuple[2].getArticleKind()}`, - }; - } - const array = tuple[2].getRaw(); - if (array.length > 0 && array[0].kind !== 'string') { - return {'error': `expected an array of strings, found \`${tuple[2].getErrorText()}\``}; + const ret = validator(parser, + { + kind: 'tuple', + elements: [ + { kind: 'selector' }, + { kind: 'selector' }, + { + kind: 'array', + allowEmpty: false, + valueTypes: { + 'string': [], + }, + }, + ], + }, + ); + if (hasError(ret)) { + return ret; } - const [insertBefore, insertAfter] = getInsertStrings(assertFalse, true); + const tuple = ret.value.entries; + const selector1 = tuple[0].value; + const selector2 = tuple[1].value; + const properties = tuple[2].value.entries.map(e => `"${e.getStringValue()}"`).join(','); + const needColorCheck = tuple[2].value.entries.some(e => e.getStringValue() === 'color'); - const selector1 = tuple[0].getSelector(); - if (selector1.error !== undefined) { - return selector1; - } + const [insertBefore, insertAfter] = getInsertStrings(assertFalse, true); const pseudo1 = !selector1.isXPath && selector1.pseudo !== null ? `, "${selector1.pseudo}"` : ''; - - const selector2 = tuple[1].getSelector(); - if (selector2.error !== undefined) { - return selector2; - } const pseudo2 = !selector2.isXPath && selector2.pseudo !== null ? `, "${selector2.pseudo}"` : ''; @@ -229,25 +210,7 @@ function parseCompareElementsCssInner(parser, assertFalse) { const selectors = getAndSetElements(selector1, varName + '1', false) + '\n' + getAndSetElements(selector2, varName + '2', false) + '\n'; - let arr = ''; - let needColorCheck = false; - for (const entry of array) { - const key = entry.getStringValue(); - if (key.length === 0) { - return { - 'error': 'Empty CSS property keys ("" or \'\') are not allowed', - }; - } - if (arr.length > 0) { - arr += ','; - } - if (key === 'color') { - needColorCheck = true; - } - arr += `"${key}"`; - } - - const code = `const properties = [${arr}];\n` + + const code = `const properties = [${properties}];\n` + 'for (const css_property of properties) {\n' + `${insertBefore}let style1_1 = e1.style[css_property];\n` + 'let style1_2 = computed_style1[css_property];\n' + diff --git a/src/validator.js b/src/validator.js index 206a076d2..8b48c25b1 100644 --- a/src/validator.js +++ b/src/validator.js @@ -272,6 +272,9 @@ function validateArray(parser, allowedSyntax, validator) { if (arrayElems.length === 0) { return parser; } + // Allowed by default and optional to specify. + const allowEmpty = allowedSyntax.allowEmpty !== false; + const allowedForType = getObjectValue(allowedSyntax.valueTypes, arrayElems[0].kind); if (allowedForType === undefined) { const exp = Object.keys(allowedSyntax.valueTypes).join(' or '); @@ -293,6 +296,15 @@ ${listValues(allowedForType)}`, } } } + if (!allowEmpty) { + for (const value of arrayElems) { + if (value.getStringValue().length === 0) { + return validator.makeError( + `empty values (\`${value.getErrorText()}\`) are not allowed`, + ); + } + } + } return parser; } From fed6ca8eaa7c8fff39671e1fe6cf832db0b23b5b Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sun, 3 Mar 2024 18:35:10 +0100 Subject: [PATCH 2/3] Update tests --- tests/test-js/api-output/parseCompareElementsCss/err-1.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-10.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-11.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-12.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-13.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-2.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-3.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-4.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-5.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-6.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-7.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-8.toml | 2 +- tests/test-js/api-output/parseCompareElementsCss/err-9.toml | 2 +- .../test-js/api-output/parseCompareElementsCss/multiline-1.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-1.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-10.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-11.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-12.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-13.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-2.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-3.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-4.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-5.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-6.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-7.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-8.toml | 2 +- .../test-js/api-output/parseCompareElementsCssFalse/err-9.toml | 2 +- .../api-output/parseCompareElementsCssFalse/multiline-1.toml | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-1.toml b/tests/test-js/api-output/parseCompareElementsCss/err-1.toml index 0d21aa6fe..cbc52781b 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-1.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a tuple""" +error = """expected third element of the tuple to be an array, found `()` (a tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-10.toml b/tests/test-js/api-output/parseCompareElementsCss/err-10.toml index 35e9d8ca0..3a050e336 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-10.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-10.toml @@ -1 +1 @@ -error = """expected first argument to be a CSS selector or an XPath, found a tuple""" +error = """expected first element of the tuple to be a selector, found `()` (a tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-11.toml b/tests/test-js/api-output/parseCompareElementsCss/err-11.toml index c667e168e..bff02634e 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-11.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-11.toml @@ -1 +1 @@ -error = """expected 3 elements in the tuple, found 4 elements""" +error = """expected a tuple of 3 elements, found 4""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-12.toml b/tests/test-js/api-output/parseCompareElementsCss/err-12.toml index f7b2751a6..df53aa8da 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-12.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-12.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a number""" +error = """expected third element of the tuple to be an array, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-13.toml b/tests/test-js/api-output/parseCompareElementsCss/err-13.toml index 8353d5149..f0a425a51 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-13.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-13.toml @@ -1 +1 @@ -error = """Empty CSS property keys (\"\" or '') are not allowed""" +error = """empty values (`\"\"`) are not allowed (third element of the tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-2.toml b/tests/test-js/api-output/parseCompareElementsCss/err-2.toml index 0d21aa6fe..94db9b2bb 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-2.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-2.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a tuple""" +error = """expected third element of the tuple to be an array, found `(1)` (a tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-3.toml b/tests/test-js/api-output/parseCompareElementsCss/err-3.toml index 3442d3833..eb53d76d3 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-3.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-3.toml @@ -1 +1 @@ -error = """expected a tuple, found `\"a\"`""" +error = """expected a tuple, found `\"a\"` (a string)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-4.toml b/tests/test-js/api-output/parseCompareElementsCss/err-4.toml index 55fa0faac..e3c8fd119 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-4.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-4.toml @@ -1 +1 @@ -error = """expected a tuple, found `1`""" +error = """expected a tuple, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-5.toml b/tests/test-js/api-output/parseCompareElementsCss/err-5.toml index 2504d5499..9122dd415 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-5.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-5.toml @@ -1 +1 @@ -error = """expected 3 elements in the tuple, found 0 element""" +error = """expected a tuple of 3 elements, found 0""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-6.toml b/tests/test-js/api-output/parseCompareElementsCss/err-6.toml index 24e53244b..e1a5e4a0d 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-6.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-6.toml @@ -1 +1 @@ -error = """expected a tuple, found `[]`""" +error = """expected a tuple, found `[]` (an array)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-7.toml b/tests/test-js/api-output/parseCompareElementsCss/err-7.toml index 0fea0151c..344850cfa 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-7.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-7.toml @@ -1 +1 @@ -error = """expected 3 elements in the tuple, found 1 element""" +error = """expected a tuple of 3 elements, found 1""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-8.toml b/tests/test-js/api-output/parseCompareElementsCss/err-8.toml index c832530dc..733b133a6 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-8.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-8.toml @@ -1 +1 @@ -error = """expected second argument to be a CSS selector or an XPath, found a number""" +error = """expected second element of the tuple to be a selector, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/err-9.toml b/tests/test-js/api-output/parseCompareElementsCss/err-9.toml index 3521e42e7..4fdc776eb 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/err-9.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/err-9.toml @@ -1 +1 @@ -error = """expected first argument to be a CSS selector or an XPath, found a number""" +error = """expected first element of the tuple to be a selector, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCss/multiline-1.toml b/tests/test-js/api-output/parseCompareElementsCss/multiline-1.toml index f7b2751a6..df53aa8da 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/multiline-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/multiline-1.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a number""" +error = """expected third element of the tuple to be an array, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-1.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-1.toml index 0d21aa6fe..cbc52781b 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-1.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a tuple""" +error = """expected third element of the tuple to be an array, found `()` (a tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-10.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-10.toml index 35e9d8ca0..3a050e336 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-10.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-10.toml @@ -1 +1 @@ -error = """expected first argument to be a CSS selector or an XPath, found a tuple""" +error = """expected first element of the tuple to be a selector, found `()` (a tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-11.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-11.toml index c667e168e..bff02634e 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-11.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-11.toml @@ -1 +1 @@ -error = """expected 3 elements in the tuple, found 4 elements""" +error = """expected a tuple of 3 elements, found 4""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-12.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-12.toml index f7b2751a6..df53aa8da 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-12.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-12.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a number""" +error = """expected third element of the tuple to be an array, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-13.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-13.toml index 8353d5149..f0a425a51 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-13.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-13.toml @@ -1 +1 @@ -error = """Empty CSS property keys (\"\" or '') are not allowed""" +error = """empty values (`\"\"`) are not allowed (third element of the tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-2.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-2.toml index 0d21aa6fe..94db9b2bb 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-2.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-2.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a tuple""" +error = """expected third element of the tuple to be an array, found `(1)` (a tuple)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-3.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-3.toml index 3442d3833..eb53d76d3 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-3.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-3.toml @@ -1 +1 @@ -error = """expected a tuple, found `\"a\"`""" +error = """expected a tuple, found `\"a\"` (a string)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-4.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-4.toml index 55fa0faac..e3c8fd119 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-4.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-4.toml @@ -1 +1 @@ -error = """expected a tuple, found `1`""" +error = """expected a tuple, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-5.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-5.toml index 2504d5499..9122dd415 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-5.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-5.toml @@ -1 +1 @@ -error = """expected 3 elements in the tuple, found 0 element""" +error = """expected a tuple of 3 elements, found 0""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-6.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-6.toml index 24e53244b..e1a5e4a0d 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-6.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-6.toml @@ -1 +1 @@ -error = """expected a tuple, found `[]`""" +error = """expected a tuple, found `[]` (an array)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-7.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-7.toml index 0fea0151c..344850cfa 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-7.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-7.toml @@ -1 +1 @@ -error = """expected 3 elements in the tuple, found 1 element""" +error = """expected a tuple of 3 elements, found 1""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-8.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-8.toml index c832530dc..733b133a6 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-8.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-8.toml @@ -1 +1 @@ -error = """expected second argument to be a CSS selector or an XPath, found a number""" +error = """expected second element of the tuple to be a selector, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/err-9.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/err-9.toml index 3521e42e7..4fdc776eb 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/err-9.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/err-9.toml @@ -1 +1 @@ -error = """expected first argument to be a CSS selector or an XPath, found a number""" +error = """expected first element of the tuple to be a selector, found `1` (a number)""" diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-1.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-1.toml index f7b2751a6..df53aa8da 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-1.toml @@ -1 +1 @@ -error = """expected third argument to be an array of string, found a number""" +error = """expected third element of the tuple to be an array, found `1` (a number)""" From 4ebc039c6a0755e7d31d7a4f2b3c80382becbdd2 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sun, 3 Mar 2024 23:11:48 +0100 Subject: [PATCH 3/3] Improve generated code appearance --- src/commands/compare.js | 46 +++++++++++-------- .../parseCompareElementsCss/basic-1.toml | 28 ++++++----- .../parseCompareElementsCss/color-1.toml | 30 +++++++----- .../parseCompareElementsCss/multiline-2.toml | 28 ++++++----- .../parseCompareElementsCss/xpath-1.toml | 28 ++++++----- .../parseCompareElementsCss/xpath-2.toml | 28 ++++++----- .../parseCompareElementsCss/xpath-3.toml | 28 ++++++----- .../parseCompareElementsCssFalse/basic-1.toml | 32 +++++++------ .../parseCompareElementsCssFalse/color-1.toml | 34 ++++++++------ .../multiline-2.toml | 32 +++++++------ .../parseCompareElementsCssFalse/xpath-1.toml | 32 +++++++------ .../parseCompareElementsCssFalse/xpath-2.toml | 32 +++++++------ .../parseCompareElementsCssFalse/xpath-3.toml | 32 +++++++------ tests/ui-tests/debug.output | 34 ++++++++------ 14 files changed, 264 insertions(+), 180 deletions(-) diff --git a/src/commands/compare.js b/src/commands/compare.js index 32506cb25..126c78d9a 100644 --- a/src/commands/compare.js +++ b/src/commands/compare.js @@ -210,32 +210,38 @@ function parseCompareElementsCssInner(parser, assertFalse) { const selectors = getAndSetElements(selector1, varName + '1', false) + '\n' + getAndSetElements(selector2, varName + '2', false) + '\n'; - const code = `const properties = [${properties}];\n` + - 'for (const css_property of properties) {\n' + - `${insertBefore}let style1_1 = e1.style[css_property];\n` + - 'let style1_2 = computed_style1[css_property];\n' + - 'let style2_1 = e2.style[css_property];\n' + - 'let style2_2 = computed_style2[css_property];\n' + - 'if (style1_1 != style2_1 && style1_1 != style2_2 && ' + - 'style1_2 != style2_1 && style1_2 != style2_2) {\n' + - 'throw \'CSS property `\' + css_property + \'` did not match: \' + ' + - `style1_2 + ' != ' + style2_2; }${insertAfter}\n` + - '}\n'; + const code = `\ +const properties = [${properties}]; +for (const css_prop of properties) { + ${insertBefore}let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property \`' + css_prop + '\` did not match: ' + style1_2 + ' != ' + style2_2; + }${insertAfter} +} +`; const instructions = []; if (needColorCheck) { - instructions.push('if (!arg.showText) {\n' + - `throw "${COLOR_CHECK_ERROR}";\n` + - '}', + instructions.push( + `\ +if (!arg.showText) { + throw "${COLOR_CHECK_ERROR}"; +}`, ); } instructions.push( - selectors + - 'await page.evaluate((e1, e2) => {' + - `let computed_style1 = getComputedStyle(e1${pseudo1});\n` + - `let computed_style2 = getComputedStyle(e2${pseudo2});\n` + - code + - `}, ${varName}1, ${varName}2);`, + `\ +${selectors} +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1${pseudo1}); + let computed_style2 = getComputedStyle(e2${pseudo2}); +${indentString(code, 1)} +}, ${varName}1, ${varName}2);`, ); return { 'instructions': instructions, diff --git a/tests/test-js/api-output/parseCompareElementsCss/basic-1.toml b/tests/test-js/api-output/parseCompareElementsCss/basic-1.toml index 8945b8be6..bffbd7f65 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/basic-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/basic-1.toml @@ -3,17 +3,23 @@ instructions = [ if (parseCompareElementsCss1 === null) { throw '\"a\" not found'; } let parseCompareElementsCss2 = await page.$(\"b\"); if (parseCompareElementsCss2 === null) { throw '\"b\" not found'; } -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCss/color-1.toml b/tests/test-js/api-output/parseCompareElementsCss/color-1.toml index beb48bf14..901130396 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/color-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/color-1.toml @@ -1,22 +1,28 @@ instructions = [ """if (!arg.showText) { -throw \"`show-text: true` needs to be used before checking for `color` (otherwise the browser doesn't compute it)\"; + throw \"`show-text: true` needs to be used before checking for `color` (otherwise the browser doesn't compute it)\"; }""", """let parseCompareElementsCss1 = await page.$(\"a\"); if (parseCompareElementsCss1 === null) { throw '\"a\" not found'; } let parseCompareElementsCss2 = await page.$(\"b\"); if (parseCompareElementsCss2 === null) { throw '\"b\" not found'; } -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"color\"]; -for (const css_property of properties) { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"color\"]; + for (const css_prop of properties) { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCss/multiline-2.toml b/tests/test-js/api-output/parseCompareElementsCss/multiline-2.toml index 8b941101a..085db4c42 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/multiline-2.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/multiline-2.toml @@ -5,17 +5,23 @@ parseCompareElementsCss1 = parseCompareElementsCss1[0]; let parseCompareElementsCss2 = await page.$x(\"//b\"); if (parseCompareElementsCss2.length === 0) { throw 'XPath \"//b\" not found'; } parseCompareElementsCss2 = parseCompareElementsCss2[0]; -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCss/xpath-1.toml b/tests/test-js/api-output/parseCompareElementsCss/xpath-1.toml index 1288c7870..15243f606 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/xpath-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/xpath-1.toml @@ -4,17 +4,23 @@ if (parseCompareElementsCss1.length === 0) { throw 'XPath \"//a\" not found'; } parseCompareElementsCss1 = parseCompareElementsCss1[0]; let parseCompareElementsCss2 = await page.$(\"b\"); if (parseCompareElementsCss2 === null) { throw '\"b\" not found'; } -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCss/xpath-2.toml b/tests/test-js/api-output/parseCompareElementsCss/xpath-2.toml index 9b15bf3af..96fa2281c 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/xpath-2.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/xpath-2.toml @@ -4,17 +4,23 @@ if (parseCompareElementsCss1 === null) { throw '\"a\" not found'; } let parseCompareElementsCss2 = await page.$x(\"//b\"); if (parseCompareElementsCss2.length === 0) { throw 'XPath \"//b\" not found'; } parseCompareElementsCss2 = parseCompareElementsCss2[0]; -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCss/xpath-3.toml b/tests/test-js/api-output/parseCompareElementsCss/xpath-3.toml index 8b941101a..085db4c42 100644 --- a/tests/test-js/api-output/parseCompareElementsCss/xpath-3.toml +++ b/tests/test-js/api-output/parseCompareElementsCss/xpath-3.toml @@ -5,17 +5,23 @@ parseCompareElementsCss1 = parseCompareElementsCss1[0]; let parseCompareElementsCss2 = await page.$x(\"//b\"); if (parseCompareElementsCss2.length === 0) { throw 'XPath \"//b\" not found'; } parseCompareElementsCss2 = parseCompareElementsCss2[0]; -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/basic-1.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/basic-1.toml index 423d902b8..b99f1835d 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/basic-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/basic-1.toml @@ -3,19 +3,25 @@ instructions = [ if (parseCompareElementsCss1 === null) { throw '\"a\" not found'; } let parseCompareElementsCss2 = await page.$(\"b\"); if (parseCompareElementsCss2 === null) { throw '\"b\" not found'; } -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -try { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} catch(e) { continue; } throw \"assert didn't fail\"; -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + try { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } catch(e) { continue; } throw \"assert didn't fail\"; + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/color-1.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/color-1.toml index 83eb2e861..bed2b0a1b 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/color-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/color-1.toml @@ -1,24 +1,30 @@ instructions = [ """if (!arg.showText) { -throw \"`show-text: true` needs to be used before checking for `color` (otherwise the browser doesn't compute it)\"; + throw \"`show-text: true` needs to be used before checking for `color` (otherwise the browser doesn't compute it)\"; }""", """let parseCompareElementsCss1 = await page.$(\"a\"); if (parseCompareElementsCss1 === null) { throw '\"a\" not found'; } let parseCompareElementsCss2 = await page.$(\"b\"); if (parseCompareElementsCss2 === null) { throw '\"b\" not found'; } -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"color\"]; -for (const css_property of properties) { -try { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} catch(e) { continue; } throw \"assert didn't fail\"; -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"color\"]; + for (const css_prop of properties) { + try { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } catch(e) { continue; } throw \"assert didn't fail\"; + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-2.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-2.toml index d7c1c8112..13d5e343a 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-2.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/multiline-2.toml @@ -5,19 +5,25 @@ parseCompareElementsCss1 = parseCompareElementsCss1[0]; let parseCompareElementsCss2 = await page.$x(\"//b\"); if (parseCompareElementsCss2.length === 0) { throw 'XPath \"//b\" not found'; } parseCompareElementsCss2 = parseCompareElementsCss2[0]; -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -try { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} catch(e) { continue; } throw \"assert didn't fail\"; -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + try { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } catch(e) { continue; } throw \"assert didn't fail\"; + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-1.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-1.toml index 680be5ebf..30f58fb01 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-1.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-1.toml @@ -4,19 +4,25 @@ if (parseCompareElementsCss1.length === 0) { throw 'XPath \"//a\" not found'; } parseCompareElementsCss1 = parseCompareElementsCss1[0]; let parseCompareElementsCss2 = await page.$(\"b\"); if (parseCompareElementsCss2 === null) { throw '\"b\" not found'; } -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -try { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} catch(e) { continue; } throw \"assert didn't fail\"; -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + try { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } catch(e) { continue; } throw \"assert didn't fail\"; + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-2.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-2.toml index 2de08daf0..ab4f23947 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-2.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-2.toml @@ -4,19 +4,25 @@ if (parseCompareElementsCss1 === null) { throw '\"a\" not found'; } let parseCompareElementsCss2 = await page.$x(\"//b\"); if (parseCompareElementsCss2.length === 0) { throw 'XPath \"//b\" not found'; } parseCompareElementsCss2 = parseCompareElementsCss2[0]; -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -try { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} catch(e) { continue; } throw \"assert didn't fail\"; -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + try { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } catch(e) { continue; } throw \"assert didn't fail\"; + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-3.toml b/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-3.toml index d7c1c8112..13d5e343a 100644 --- a/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-3.toml +++ b/tests/test-js/api-output/parseCompareElementsCssFalse/xpath-3.toml @@ -5,19 +5,25 @@ parseCompareElementsCss1 = parseCompareElementsCss1[0]; let parseCompareElementsCss2 = await page.$x(\"//b\"); if (parseCompareElementsCss2.length === 0) { throw 'XPath \"//b\" not found'; } parseCompareElementsCss2 = parseCompareElementsCss2[0]; -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = [\"margin\"]; -for (const css_property of properties) { -try { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} catch(e) { continue; } throw \"assert didn't fail\"; -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = [\"margin\"]; + for (const css_prop of properties) { + try { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } catch(e) { continue; } throw \"assert didn't fail\"; + } + }, parseCompareElementsCss1, parseCompareElementsCss2);""", ] wait = false diff --git a/tests/ui-tests/debug.output b/tests/ui-tests/debug.output index eb2102b26..59d56d2d3 100644 --- a/tests/ui-tests/debug.output +++ b/tests/ui-tests/debug.output @@ -25,26 +25,32 @@ if (tmp) { tmp.remove(); } });" [DEBUG] Done! [DEBUG] EXECUTING (line 5) "if (!arg.showText) { -throw "`show-text: true` needs to be used before checking for `color` (otherwise the browser doesn't compute it)"; + throw "`show-text: true` needs to be used before checking for `color` (otherwise the browser doesn't compute it)"; }" [DEBUG] Done! [DEBUG] EXECUTING (line 5) "let parseCompareElementsCss1 = await page.$(".content>.right>p"); if (parseCompareElementsCss1 === null) { throw '".content>.right>p" not found'; } let parseCompareElementsCss2 = await page.$(".content>.left"); if (parseCompareElementsCss2 === null) { throw '".content>.left" not found'; } -await page.evaluate((e1, e2) => {let computed_style1 = getComputedStyle(e1); -let computed_style2 = getComputedStyle(e2); -const properties = ["color"]; -for (const css_property of properties) { -try { -let style1_1 = e1.style[css_property]; -let style1_2 = computed_style1[css_property]; -let style2_1 = e2.style[css_property]; -let style2_2 = computed_style2[css_property]; -if (style1_1 != style2_1 && style1_1 != style2_2 && style1_2 != style2_1 && style1_2 != style2_2) { -throw 'CSS property `' + css_property + '` did not match: ' + style1_2 + ' != ' + style2_2; } -} catch(e) { continue; } throw "assert didn't fail"; -} + +await page.evaluate((e1, e2) => { + let computed_style1 = getComputedStyle(e1); + let computed_style2 = getComputedStyle(e2); + const properties = ["color"]; + for (const css_prop of properties) { + try { + let style1_1 = e1.style[css_prop]; + let style1_2 = computed_style1[css_prop]; + let style2_1 = e2.style[css_prop]; + let style2_2 = computed_style2[css_prop]; + if (style1_1 != style2_1 && style1_1 != style2_2 && + style1_2 != style2_1 && style1_2 != style2_2) + { + throw 'CSS property `' + css_prop + '` did not match: ' + style1_2 + ' != ' + style2_2; + } + } catch(e) { continue; } throw "assert didn't fail"; + } + }, parseCompareElementsCss1, parseCompareElementsCss2);" [DEBUG] Done!FAILED [ERROR] `tests/ui-tests/debug.goml` line 5: Error: Evaluation failed: assert didn't fail: for command `compare-elements-css-false: (".content>.right>p", ".content>.left", ["color"])`