From d842c857fcc39774cc8268463595536256bb2b56 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Tue, 6 Dec 2022 16:33:44 +0100 Subject: [PATCH 01/12] uaTest Using-a-Chrome-executable-in-a-non-standard-location --- msa/black-box-tests/README.md | 4 ++++ .../msa/ui/base/AbstractDriverBaseTest.java | 20 +++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/msa/black-box-tests/README.md b/msa/black-box-tests/README.md index a4bbe48961..abf5cac9a5 100644 --- a/msa/black-box-tests/README.md +++ b/msa/black-box-tests/README.md @@ -38,6 +38,10 @@ As result, in REPOSITORY column, next images should be present: mvn clean install -DblackBoxTests.skip=false -Dsuite=uiTests + Optionally you can specify a custom Chrome binary location that might be useful for your CI/CD tool + + mvn clean install -DblackBoxTests.skip=false -Dsuite=uiTests -DchromeBinary=/tmp/google-chrome/opt/google/chrome/chrome + - To run all tests in the [msa/black-box-tests](../black-box-tests) directory specifying suite name: mvn clean install -DblackBoxTests.skip=false -Dsuite=all diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java index 6badd78e8e..2ac89b43fa 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java @@ -35,6 +35,7 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Listeners; import org.thingsboard.server.common.data.Customer; +import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.msa.AbstractContainerTest; @@ -63,18 +64,21 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { @BeforeMethod public void openBrowser() { log.info("*----------------------* Setup driver *----------------------*"); - if (HEADLESS == true) { - ChromeOptions options = new ChromeOptions(); - options.addArguments("--ignore-certificate-errors"); + ChromeOptions options = new ChromeOptions(); + options.addArguments("--ignore-certificate-errors"); + if (HEADLESS) { options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); options.addArguments("--headless"); - driver = new ChromeDriver(options); - } else { - ChromeOptions options = new ChromeOptions(); - options.addArguments("--ignore-certificate-errors"); - driver = new ChromeDriver(options); } + + // https://sites.google.com/a/chromium.org/chromedriver/capabilities#TOC-Using-a-Chrome-executable-in-a-non-standard-location + var chromeBinary = System.getProperty("chromeBinary"); + if (StringUtils.isNotBlank(chromeBinary)) { + options.setBinary(chromeBinary); + } + + driver = new ChromeDriver(options); driver.manage().window().setSize(dimension); } From acd3d761954c448ea3557fc1ef8f4d470e0da920 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Tue, 6 Dec 2022 17:02:38 +0100 Subject: [PATCH 02/12] chrome install script to the temporary folder --- msa/black-box-tests/chrome_install.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 msa/black-box-tests/chrome_install.sh diff --git a/msa/black-box-tests/chrome_install.sh b/msa/black-box-tests/chrome_install.sh new file mode 100755 index 0000000000..af20bef5a0 --- /dev/null +++ b/msa/black-box-tests/chrome_install.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e # Any subsequent commands which fail will cause the shell script to exit immediately +CHROME_PATH=/tmp/google-chrome + +echo "Installing google-chrome to the $CHROME_PATH" + +rm -rf $CHROME_PATH +mkdir -p $CHROME_PATH +wget --no-verbose -P $CHROME_PATH https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb +dpkg-deb -xv $CHROME_PATH/google-chrome-stable_current_amd64.deb /tmp/google-chrome/ +rm $CHROME_PATH/google-chrome-stable_current_amd64.deb + +echo "Use google-binary as ChromeOptions options = new ChromeOptions(); options.setBinary(\"${CHROME_PATH}/opt/google/chrome/chrome\");" From 81464be1348898d609c572175b199d23b2c99843 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Tue, 6 Dec 2022 21:37:56 +0100 Subject: [PATCH 03/12] chrome options reordered to not face DevToolsActivePort issue --- .../server/msa/ui/base/AbstractDriverBaseTest.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java index 2ac89b43fa..5b0b28ac77 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java @@ -65,12 +65,6 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { public void openBrowser() { log.info("*----------------------* Setup driver *----------------------*"); ChromeOptions options = new ChromeOptions(); - options.addArguments("--ignore-certificate-errors"); - if (HEADLESS) { - options.addArguments("--no-sandbox"); - options.addArguments("--disable-dev-shm-usage"); - options.addArguments("--headless"); - } // https://sites.google.com/a/chromium.org/chromedriver/capabilities#TOC-Using-a-Chrome-executable-in-a-non-standard-location var chromeBinary = System.getProperty("chromeBinary"); @@ -78,6 +72,14 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { options.setBinary(chromeBinary); } + if (HEADLESS) { + options.addArguments("--no-sandbox"); //have to be a very first option to not face DevToolsActivePort issue + options.addArguments("--headless"); + options.addArguments("--disable-dev-shm-usage"); + } + + options.addArguments("--ignore-certificate-errors"); + driver = new ChromeDriver(options); driver.manage().window().setSize(dimension); From 511298f9b02bf35ecbb9cfb49dfba26874aaad6e Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Tue, 6 Dec 2022 21:47:33 +0100 Subject: [PATCH 04/12] chrome install license:format --- msa/black-box-tests/chrome_install.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/msa/black-box-tests/chrome_install.sh b/msa/black-box-tests/chrome_install.sh index af20bef5a0..9d4588dcb4 100755 --- a/msa/black-box-tests/chrome_install.sh +++ b/msa/black-box-tests/chrome_install.sh @@ -1,4 +1,20 @@ #!/bin/bash +# +# Copyright © 2016-2022 The Thingsboard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + set -e # Any subsequent commands which fail will cause the shell script to exit immediately CHROME_PATH=/tmp/google-chrome From 75b35dff35166feeefc7191f9334c266b5c7af34 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Tue, 6 Dec 2022 23:35:43 +0100 Subject: [PATCH 05/12] --remote-debugging-port --- .../thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java index 5b0b28ac77..f4a6f852f5 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java @@ -76,6 +76,8 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { options.addArguments("--no-sandbox"); //have to be a very first option to not face DevToolsActivePort issue options.addArguments("--headless"); options.addArguments("--disable-dev-shm-usage"); + options.addArguments("--remote-debugging-port=9222"); + options.setHeadless(true); } options.addArguments("--ignore-certificate-errors"); From c8069d902c4dd51db8e98e78ae0fc23c30b646e3 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Wed, 7 Dec 2022 00:09:43 +0100 Subject: [PATCH 06/12] --window-size=1920x1080 --- .../thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java index f4a6f852f5..eada64e72b 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java @@ -76,8 +76,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { options.addArguments("--no-sandbox"); //have to be a very first option to not face DevToolsActivePort issue options.addArguments("--headless"); options.addArguments("--disable-dev-shm-usage"); - options.addArguments("--remote-debugging-port=9222"); - options.setHeadless(true); + options.addArguments("--window-size=1920x1080"); } options.addArguments("--ignore-certificate-errors"); From 60eb1c2dd517a9f76ac3279934ba9a2b10009df1 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Wed, 7 Dec 2022 17:47:20 +0100 Subject: [PATCH 07/12] Selenium remote web driver connection implemented for docker image selenium/standalone-chrome. headless is false --- .../msa/ui/base/AbstractDriverBaseTest.java | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java index eada64e72b..0405daa33c 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java @@ -26,8 +26,9 @@ import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriverException; -import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.remote.LocalFileDetector; +import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.AfterMethod; @@ -35,13 +36,14 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Listeners; import org.thingsboard.server.common.data.Customer; -import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.msa.AbstractContainerTest; import org.thingsboard.server.msa.ui.listeners.TestListener; import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; import java.time.Duration; import java.util.stream.Collectors; @@ -53,35 +55,26 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { private final Dimension dimension = new Dimension(WIDTH, HEIGHT); private static final int WIDTH = 1680; private static final int HEIGHT = 1050; - private static final boolean HEADLESS = true; + private static final boolean HEADLESS = false; protected static final PageLink pageLink = new PageLink(10); @BeforeSuite public void beforeUISuite() { - WebDriverManager.chromedriver().setup(); } @BeforeMethod - public void openBrowser() { + public void openBrowser() throws MalformedURLException { log.info("*----------------------* Setup driver *----------------------*"); ChromeOptions options = new ChromeOptions(); + options.setHeadless(HEADLESS); + options.setAcceptInsecureCerts(true); - // https://sites.google.com/a/chromium.org/chromedriver/capabilities#TOC-Using-a-Chrome-executable-in-a-non-standard-location - var chromeBinary = System.getProperty("chromeBinary"); - if (StringUtils.isNotBlank(chromeBinary)) { - options.setBinary(chromeBinary); - } - - if (HEADLESS) { - options.addArguments("--no-sandbox"); //have to be a very first option to not face DevToolsActivePort issue - options.addArguments("--headless"); - options.addArguments("--disable-dev-shm-usage"); - options.addArguments("--window-size=1920x1080"); - } - - options.addArguments("--ignore-certificate-errors"); + // requirement: + // docker run --name=chrome --rm --network=host -p 4444:4444 -p 7900:7900 --shm-size="2g" -e SE_NODE_MAX_SESSIONS=8 -e SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_NODE_SESSION_TIMEOUT=90 -e SE_SCREEN_WIDTH=1920 -e SE_SCREEN_HEIGHT=1080 -e SE_SCREEN_DEPTH=24 -e SE_SCREEN_DPI=74 selenium/standalone-chrome + RemoteWebDriver remoteWebDriver = new RemoteWebDriver(new URL("http://localhost:4444"), options); + remoteWebDriver.setFileDetector(new LocalFileDetector()); - driver = new ChromeDriver(options); + driver = remoteWebDriver; driver.manage().window().setSize(dimension); } From 55f0b747794c0de4c10ceea5ab233fe5683c433d Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Wed, 7 Dec 2022 17:47:49 +0100 Subject: [PATCH 08/12] Selenium remote web driver test --- .../msa/SeleniumRemoteWebDriverTest.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 msa/black-box-tests/src/test/java/org/thingsboard/server/msa/SeleniumRemoteWebDriverTest.java diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/SeleniumRemoteWebDriverTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/SeleniumRemoteWebDriverTest.java new file mode 100644 index 0000000000..8c6f044f71 --- /dev/null +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/SeleniumRemoteWebDriverTest.java @@ -0,0 +1,85 @@ +/** + * Copyright © 2016-2022 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.server.msa; + +import com.google.common.io.Files; +import io.qameta.allure.Attachment; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.Dimension; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.remote.LocalFileDetector; +import org.openqa.selenium.remote.RemoteWebDriver; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; + +@Slf4j +public class SeleniumRemoteWebDriverTest { + + static final int WIDTH = 1680; + static final int HEIGHT = 1050; + final Dimension dimension = new Dimension(WIDTH, HEIGHT); + WebDriver driver; + + @SneakyThrows + @Attachment(value = "Page screenshot", type = "image/png") + public static byte[] captureScreen(WebDriver driver, String dirPath) { + File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); + FileUtils.copyFile(screenshot, new File("./target/allure-results/screenshots/" + dirPath + "//" + screenshot.getName())); + return Files.toByteArray(screenshot); + } + + + /** + * Requirement: + * docker run --name=chrome --rm --network=host -p 4444:4444 -p 7900:7900 --shm-size="2g" -e SE_NODE_MAX_SESSIONS=8 -e SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_NODE_SESSION_TIMEOUT=90 -e SE_SCREEN_WIDTH=1920 -e SE_SCREEN_HEIGHT=1080 -e SE_SCREEN_DEPTH=24 -e SE_SCREEN_DPI=74 selenium/standalone-chrome + * */ + @BeforeEach + void setUp() throws MalformedURLException { + log.info("Requirement:"); + log.info("docker run --name=chrome --rm --network=host -p 4444:4444 -p 7900:7900 --shm-size=\"2g\" -e SE_NODE_MAX_SESSIONS=8 -e SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_NODE_SESSION_TIMEOUT=90 -e SE_SCREEN_WIDTH=1920 -e SE_SCREEN_HEIGHT=1080 -e SE_SCREEN_DEPTH=24 -e SE_SCREEN_DPI=74 selenium/standalone-chrome"); + log.info("*----------------------* Setup driver *----------------------*"); + ChromeOptions options = new ChromeOptions(); + RemoteWebDriver remoteWebDriver = new RemoteWebDriver(new URL("http://127.0.0.1:4444"), options); + remoteWebDriver.setFileDetector(new LocalFileDetector()); + driver = remoteWebDriver; + driver.manage().window().setSize(dimension); + } + + @AfterEach + void tearDown() { + log.info("*----------------------* Teardown *----------------------*"); + driver.quit(); + } + + @Test + void testSeleniumConnection() { + driver.get("https://thingsboard.io/"); + captureScreen(driver, "success"); + log.info("Check the screenshot on target/allure-results/screenshots/success/screenshot???????????????.png"); + //Thread.sleep(TimeUnit.SECONDS.toMillis(30)); + } + +} From 934ede0298de1cce12c0237a0d1d5cf233a79424 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Wed, 7 Dec 2022 17:50:33 +0100 Subject: [PATCH 09/12] TestListener refactored to not hold local var --- .../thingsboard/server/msa/ui/listeners/TestListener.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java index 737022a096..60da6d32e6 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java @@ -29,13 +29,11 @@ import static org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest.captureS @Slf4j public class TestListener implements ITestListener { - WebDriver driver; - public void onTestSuccess(ITestResult tr) { String str = "Test " + tr.getMethod().getMethodName() + " success"; log.info("*----------------------* " + str + " *----------------------*"); if (!((AbstractDriverBaseTest) tr.getInstance()).getHeadless()) { - driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); + WebDriver driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); captureScreen(driver, "success"); } } @@ -46,7 +44,7 @@ public class TestListener implements ITestListener { log.info("*----------------------* " + str + " *----------------------*"); log.info("*----------------------* " + str1 + " *----------------------*"); if (!((AbstractDriverBaseTest) tr.getInstance()).getHeadless()) { - driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); + WebDriver driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); captureScreen(driver, "failure"); } } @@ -57,7 +55,7 @@ public class TestListener implements ITestListener { log.info("*----------------------* " + str + " *----------------------*"); log.info("*----------------------* " + str1 + " *----------------------*"); if (!((AbstractDriverBaseTest) tr.getInstance()).getHeadless()) { - driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); + WebDriver driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); captureScreen(driver, "skipped"); } } From 4b08c760dda3a14f618b50f9168fa7b42483f3dd Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Wed, 7 Dec 2022 17:52:17 +0100 Subject: [PATCH 10/12] bump selenium.version 4.1.0 -> 4.6.0, guava.version 30.0-jre -> 31.1-jre --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index bc698ba809..d003f13a4f 100755 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ 4.15.0 4.0.5 3.11.14 - 30.0-jre + 31.1-jre 2.6.1 3.4 1.15 @@ -144,7 +144,7 @@ 6.1.0.202203080745-r 0.4.8 1.0.0 - 4.1.1 + 4.6.0 5.2.0 2.19.0 From 606f883473033a3d8954dde8ca05c9a0bef0b03b Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Wed, 7 Dec 2022 18:00:38 +0100 Subject: [PATCH 11/12] reverted chrome binary readme for ui tests --- msa/black-box-tests/README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/msa/black-box-tests/README.md b/msa/black-box-tests/README.md index abf5cac9a5..ae0e8b79a0 100644 --- a/msa/black-box-tests/README.md +++ b/msa/black-box-tests/README.md @@ -36,11 +36,7 @@ As result, in REPOSITORY column, next images should be present: - To run ui smoke tests in the [msa/black-box-tests](../black-box-tests) directory specifying suite name: - mvn clean install -DblackBoxTests.skip=false -Dsuite=uiTests - - Optionally you can specify a custom Chrome binary location that might be useful for your CI/CD tool - - mvn clean install -DblackBoxTests.skip=false -Dsuite=uiTests -DchromeBinary=/tmp/google-chrome/opt/google/chrome/chrome + mvn clean install -DblackBoxTests.skip=false -Dsuite=uiTests - To run all tests in the [msa/black-box-tests](../black-box-tests) directory specifying suite name: From d42f0661a09fa1fd48431e524b7af1c3a2866838 Mon Sep 17 00:00:00 2001 From: Sergey Matvienko Date: Wed, 7 Dec 2022 18:38:54 +0100 Subject: [PATCH 12/12] small refactoring --- .../server/msa/ui/base/AbstractDriverBaseTest.java | 3 +-- .../thingsboard/server/msa/ui/listeners/TestListener.java | 7 +++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java index 0405daa33c..42c83235c1 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java @@ -16,7 +16,6 @@ package org.thingsboard.server.msa.ui.base; import com.google.common.io.Files; -import io.github.bonigarcia.wdm.WebDriverManager; import io.qameta.allure.Attachment; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -97,7 +96,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { return driver; } - public boolean getHeadless() { + public boolean isHeadless() { return HEADLESS; } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java index 60da6d32e6..c5be186eb4 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/listeners/TestListener.java @@ -16,7 +16,6 @@ package org.thingsboard.server.msa.ui.listeners; -import io.qameta.allure.Allure; import lombok.extern.slf4j.Slf4j; import org.openqa.selenium.WebDriver; import org.testng.ITestContext; @@ -32,7 +31,7 @@ public class TestListener implements ITestListener { public void onTestSuccess(ITestResult tr) { String str = "Test " + tr.getMethod().getMethodName() + " success"; log.info("*----------------------* " + str + " *----------------------*"); - if (!((AbstractDriverBaseTest) tr.getInstance()).getHeadless()) { + if (!((AbstractDriverBaseTest) tr.getInstance()).isHeadless()) { WebDriver driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); captureScreen(driver, "success"); } @@ -43,7 +42,7 @@ public class TestListener implements ITestListener { String str1 = "Failed because of - " + tr.getThrowable(); log.info("*----------------------* " + str + " *----------------------*"); log.info("*----------------------* " + str1 + " *----------------------*"); - if (!((AbstractDriverBaseTest) tr.getInstance()).getHeadless()) { + if (!((AbstractDriverBaseTest) tr.getInstance()).isHeadless()) { WebDriver driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); captureScreen(driver, "failure"); } @@ -54,7 +53,7 @@ public class TestListener implements ITestListener { String str1 = "Skipped because of - " + tr.getThrowable(); log.info("*----------------------* " + str + " *----------------------*"); log.info("*----------------------* " + str1 + " *----------------------*"); - if (!((AbstractDriverBaseTest) tr.getInstance()).getHeadless()) { + if (!((AbstractDriverBaseTest) tr.getInstance()).isHeadless()) { WebDriver driver = ((AbstractDriverBaseTest) tr.getInstance()).getDriver(); captureScreen(driver, "skipped"); }