diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 903672f..796dcb6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -31,7 +31,10 @@ jobs:
run: mvn -B -e clean test -Dselenium.headless=true || true
env:
CHROME_OPTIONS: --remote-allow-origins=*;--disable-gpu;--no-sandbox;--disable-dev-shm-usage;--headless=new;--window-size=1920,1080
-
+ INFLUX_URL: ${{ secrets.INFLUX_URL }}
+ INFLUX_TOKEN: ${{ secrets.INFLUX_TOKEN }}
+ INFLUX_ORG: ${{ secrets.INFLUX_ORG }}
+ INFLUX_BUCKET: ${{ secrets.INFLUX_BUCKET }}
# 4. Output failed tests
- name: Print failed tests
if: failure()
@@ -94,3 +97,16 @@ jobs:
with:
name: allure-report
path: allure-report
+
+ # 11 Print all metrics
+ - name: Print test metrics summary
+ if: always()
+ run: |
+ mvn -q exec:java -Dexec.mainClass=utils.InfluxReader > influx-summary.txt
+ echo "### Test metrics from InfluxDB" >> $GITHUB_STEP_SUMMARY
+ cat influx-summary.txt >> $GITHUB_STEP_SUMMARY
+ env:
+ INFLUX_URL: ${{ secrets.INFLUX_URL }}
+ INFLUX_TOKEN: ${{ secrets.INFLUX_TOKEN }}
+ INFLUX_ORG: ${{ secrets.INFLUX_ORG }}
+ INFLUX_BUCKET: ${{ secrets.INFLUX_BUCKET }}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 9002ade..e9b0a3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,6 +84,12 @@
selenide
7.8.0
+
+
+ com.influxdb
+ influxdb-client-java
+ 6.11.0
+
diff --git a/src/test/java/ui/testing/base/BasePage.java b/src/test/java/ui/testing/base/BasePage.java
index 619b9ef..0625dcf 100644
--- a/src/test/java/ui/testing/base/BasePage.java
+++ b/src/test/java/ui/testing/base/BasePage.java
@@ -18,7 +18,7 @@ public WebDriver getDriver() {
return driver;
}
- public WebDriverWait wait4() {
- return new WebDriverWait(getDriver(), Duration.ofSeconds(4));
+ public WebDriverWait wait10() {
+ return new WebDriverWait(getDriver(), Duration.ofSeconds(10));
}
}
diff --git a/src/test/java/ui/testing/base/BaseTest.java b/src/test/java/ui/testing/base/BaseTest.java
index 2423099..6780c8f 100644
--- a/src/test/java/ui/testing/base/BaseTest.java
+++ b/src/test/java/ui/testing/base/BaseTest.java
@@ -7,6 +7,7 @@
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.asserts.SoftAssert;
+import ui.testing.utils.InfluxReader;
public class BaseTest {
protected WebDriver driver;
@@ -36,8 +37,11 @@ public void setUp() {
@AfterMethod(alwaysRun = true)
public void tearDown() {
+ InfluxReader.printAllureMetrics();
if (driver != null) {
driver.quit();
}
}
+
}
+
diff --git a/src/test/java/ui/testing/page/ClassAttributePage.java b/src/test/java/ui/testing/page/ClassAttributePage.java
index b83c7fb..a8b2b7e 100644
--- a/src/test/java/ui/testing/page/ClassAttributePage.java
+++ b/src/test/java/ui/testing/page/ClassAttributePage.java
@@ -17,7 +17,7 @@ public ClassAttributePage(WebDriver driver) {
public String getAlert() {
buttonPrimary.click();
- wait4().until(ExpectedConditions.alertIsPresent());
+ wait10().until(ExpectedConditions.alertIsPresent());
Alert alert = getDriver().switchTo().alert();
String text = alert.getText();
alert.accept();
diff --git a/src/test/java/ui/testing/page/HiddenLayersPage.java b/src/test/java/ui/testing/page/HiddenLayersPage.java
index f76028d..e3763fd 100644
--- a/src/test/java/ui/testing/page/HiddenLayersPage.java
+++ b/src/test/java/ui/testing/page/HiddenLayersPage.java
@@ -15,7 +15,7 @@ public HiddenLayersPage(WebDriver driver) {
public String notAllowedClickMoreThanOne() {
String message = "";
boolean clickable = true;
- WebElement enableButton = wait4().until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@id = 'greenButton']")));
+ WebElement enableButton = wait10().until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@id = 'greenButton']")));
try {
enableButton.click();
message = "Green button visible and clicked. Click : ";
diff --git a/src/test/java/ui/testing/page/LoadDelayPage.java b/src/test/java/ui/testing/page/LoadDelayPage.java
index 5a88e95..d0e317f 100644
--- a/src/test/java/ui/testing/page/LoadDelayPage.java
+++ b/src/test/java/ui/testing/page/LoadDelayPage.java
@@ -15,7 +15,7 @@ public LoadDelayPage(WebDriver driver) {
@Step("Wait until button will be presence on page")
public String confirmAppearedButton() {
WebElement btnAppeared = getDriver().findElement(By.xpath("//button[@class = 'btn btn-primary']"));
- wait4().until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//button[@class = 'btn btn-primary']")));
+ wait10().until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//button[@class = 'btn btn-primary']")));
return btnAppeared.getText();
}
diff --git a/src/test/java/ui/testing/utils/InfluxReader.java b/src/test/java/ui/testing/utils/InfluxReader.java
new file mode 100644
index 0000000..4aca966
--- /dev/null
+++ b/src/test/java/ui/testing/utils/InfluxReader.java
@@ -0,0 +1,48 @@
+package ui.testing.utils;
+
+import com.influxdb.client.InfluxDBClient;
+import com.influxdb.client.InfluxDBClientFactory;
+import com.influxdb.query.FluxTable;
+
+import java.util.List;
+
+public class InfluxReader {
+
+ public static void printAllureMetrics() {
+ String url = System.getenv("INFLUX_URL");
+ String token = System.getenv("INFLUX_TOKEN");
+ String org = System.getenv("INFLUX_ORG");
+ String bucket = System.getenv("INFLUX_BUCKET");
+ // 👇 Добавь проверки
+ if (url == null || token == null || org == null || bucket == null) {
+ System.err.println("⚠️ InfluxDB environment variables are not set!");
+ System.err.println("Set: INFLUX_URL, INFLUX_TOKEN, INFLUX_ORG, INFLUX_BUCKET");
+ return;
+ }
+
+ try (InfluxDBClient client = InfluxDBClientFactory.create(url, token.toCharArray(), org)) {
+
+ String flux = String.format("""
+ from(bucket: "%s")
+ |> range(start: -24h)
+ |> filter(fn: (r) => r["_measurement"] == "allure_test")
+ |> group(columns: ["status"])
+ |> count()
+ """, bucket);
+
+ List tables = client.getQueryApi().query(flux, org);
+
+ System.out.println("🧪 Test results from InfluxDB (last 24h):");
+ for (FluxTable table : tables) {
+ table.getRecords().forEach(rec -> {
+ System.out.printf("%s : %s%n",
+ rec.getValueByKey("status"),
+ rec.getValue());
+ });
+ }
+
+ } catch (Exception e) {
+ System.err.println("⚠️ Failed to query InfluxDB: " + e.getMessage());
+ }
+ }
+}