From a99842979703af1ecb3046af97147237263b3591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albrecht=20Ko=CC=88hnlein?= Date: Wed, 6 Apr 2022 15:22:19 +0200 Subject: [PATCH 1/2] Escape double quotes to not break JavaScript commands --- module/VisualCeption.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/module/VisualCeption.php b/module/VisualCeption.php index 37ab601..56909cd 100755 --- a/module/VisualCeption.php +++ b/module/VisualCeption.php @@ -325,6 +325,9 @@ private function getCoordinates($elementId) { if (is_null($elementId)) { $elementId = 'body'; + } else { + // escape double quotes to not break JavaScript commands + $elementId = str_replace('"', '\\"', $elementId); } $elementExists = (bool)$this->webDriver->executeScript('return document.querySelectorAll( "' . $elementId . '" ).length > 0;'); From 01afcba178c7e640ce7cc6eddbaa450aa31ea7b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albrecht=20K=C3=B6hnlein?= Date: Fri, 22 Apr 2022 21:13:54 +0200 Subject: [PATCH 2/2] Add test for usage with different selectors, including single and double quotes --- test/integration/html/multipleAttributes.html | 18 +++++++++++++++ ...orMultipleSelectors.multipleAttributes.png | Bin 0 -> 2801 bytes .../acceptance/MultipleAttributesCest.php | 21 ++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 test/integration/html/multipleAttributes.html create mode 100644 test/integration/tests/_data/VisualCeption/MultipleAttributesCest.seeSameDivForMultipleSelectors.multipleAttributes.png create mode 100755 test/integration/tests/acceptance/MultipleAttributesCest.php diff --git a/test/integration/html/multipleAttributes.html b/test/integration/html/multipleAttributes.html new file mode 100644 index 0000000..7a8fd96 --- /dev/null +++ b/test/integration/html/multipleAttributes.html @@ -0,0 +1,18 @@ + + + + + Multiple Attributes + + + +Testing a div with multiple attribute selectors +
My div with multiple attributes
+ + diff --git a/test/integration/tests/_data/VisualCeption/MultipleAttributesCest.seeSameDivForMultipleSelectors.multipleAttributes.png b/test/integration/tests/_data/VisualCeption/MultipleAttributesCest.seeSameDivForMultipleSelectors.multipleAttributes.png new file mode 100644 index 0000000000000000000000000000000000000000..7235f0f45186496cadfd68ba111141a4967fc2e1 GIT binary patch literal 2801 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 literal 0 HcmV?d00001 diff --git a/test/integration/tests/acceptance/MultipleAttributesCest.php b/test/integration/tests/acceptance/MultipleAttributesCest.php new file mode 100755 index 0000000..0a0a61b --- /dev/null +++ b/test/integration/tests/acceptance/MultipleAttributesCest.php @@ -0,0 +1,21 @@ +amOnPage("/multipleAttributes.html"); + // class selector + $I->dontSeeVisualChanges("multipleAttributes", ".block"); + // attribute selector without value + $I->dontSeeVisualChanges("multipleAttributes", "[data-element]"); + // attribute selector with single quotes + $I->dontSeeVisualChanges("multipleAttributes", "[data-element='myElement']"); + // attribute selector with double quotes + $I->dontSeeVisualChanges("multipleAttributes", '[data-element="myElement"]'); + } +}