summaryrefslogtreecommitdiff
path: root/src/test/java/com/mavlushechka
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/mavlushechka')
-rw-r--r--src/test/java/com/mavlushechka/a1qa/project/TestCase1.java91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/test/java/com/mavlushechka/a1qa/project/TestCase1.java b/src/test/java/com/mavlushechka/a1qa/project/TestCase1.java
new file mode 100644
index 0000000..0bc1d61
--- /dev/null
+++ b/src/test/java/com/mavlushechka/a1qa/project/TestCase1.java
@@ -0,0 +1,91 @@
+package com.mavlushechka.a1qa.project;
+
+import aquality.selenium.browser.AqualityServices;
+import com.mavlushechka.a1qa.framework.BaseTest;
+import com.mavlushechka.a1qa.framework.utils.JsonParser;
+import com.mavlushechka.a1qa.framework.utils.LoggerUtils;
+import com.mavlushechka.a1qa.framework.utils.StringUtils;
+import com.mavlushechka.a1qa.project.models.User;
+import com.mavlushechka.a1qa.project.pages.AddProjectPage;
+import com.mavlushechka.a1qa.project.pages.ProjectsPage;
+import com.mavlushechka.a1qa.project.pages.TestsPage;
+import com.mavlushechka.a1qa.framework.utils.Collections;
+import com.mavlushechka.a1qa.project.utils.SiteApiUtils;
+import org.openqa.selenium.Cookie;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.function.Supplier;
+
+public class TestCase1 extends BaseTest {
+
+ @Test
+ public void test1() throws IOException {
+ LoggerUtils.step("Query the api to retrieve the token according to the variant number.");
+ int variant = Integer.parseInt(JsonParser.parseData("testData", "variant"));
+ String token = SiteApiUtils.generateToken(variant);
+ Assert.assertNotEquals(token, null, "The token is null.");
+
+ ProjectsPage projectsPage = new ProjectsPage();
+ LoggerUtils.step("Go to the website. Complete the necessary authorisation."
+ + "Transfer the token (parameter token) generated in step 1 using a cookie. Refresh the page.");
+ projectsPage.performAuthorization(JsonParser.convertToObject(JsonParser.parseObject("testData", "user"), User.class));
+ Assert.assertTrue(projectsPage.state().waitForDisplayed(), "The %s page is not opened.".formatted(projectsPage.getName()));
+ AqualityServices.getBrowser().getDriver().manage().addCookie(new Cookie("token", token));
+ AqualityServices.getBrowser().refresh();
+ Assert.assertEquals(projectsPage.getVersion(), variant, "The variant is not correct.");
+
+ LoggerUtils.step("Go to the Nexage project page. Query the api to get a list of tests in JSON/XML format.");
+ projectsPage.openProject(JsonParser.parseData("testData", "project.name"));
+ TestsPage testsPage = new TestsPage();
+ Assert.assertTrue(testsPage.state().waitForDisplayed(), "The %s page is not opened.".formatted(testsPage.getName()));
+ List<com.mavlushechka.a1qa.project.models.Test> allRunningTestsOnSite = testsPage.getAllRunningTests();
+ Assert.assertTrue(Collections.isSortedDescending(allRunningTestsOnSite), "Tests are not sorted in descending order.");
+ Object[] objectsOfAllRunningTestsReceivedByApi = JsonParser.convertArray(
+ SiteApiUtils.getTestsJson(Integer.parseInt(JsonParser.parseData("testData", "project.id"))),
+ com.mavlushechka.a1qa.project.models.Test.class
+ );
+ ArrayList<com.mavlushechka.a1qa.project.models.Test> allRunningTestsReceivedByApi = new ArrayList<>();
+ for (Object object : objectsOfAllRunningTestsReceivedByApi) {
+ allRunningTestsReceivedByApi.add((com.mavlushechka.a1qa.project.models.Test) object);
+ }
+ Assert.assertTrue(allRunningTestsReceivedByApi.containsAll(allRunningTestsOnSite),
+ "All running tests received by API not contains all running tests on site.");
+
+ LoggerUtils.step("Return to the previous page in the browser (project page). Press +Add. Enter the project name, and save."
+ + "Call the closePopUp() js-method to close the add project window. Refresh the page.");
+ AqualityServices.getBrowser().goBack();
+ projectsPage.clickOnAddButton();
+ AqualityServices.getBrowser().tabs().switchToLastTab();
+ AddProjectPage addProjectPage = new AddProjectPage();
+ Supplier<String> randomTextGenerator = () -> StringUtils.generateRandomText(
+ Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.lettersLowerBound")),
+ Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.lettersUpperBound")),
+ Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.length"))
+ );
+ String projectName = randomTextGenerator.get();
+ addProjectPage.saveProject(projectName);
+ Assert.assertTrue(addProjectPage.isProjectSaved(projectName), "The project is not saved.");
+ String currentTabHandle = AqualityServices.getBrowser().tabs().getCurrentTabHandle();
+ AqualityServices.getBrowser().tabs().closeTab();
+ Assert.assertFalse(AqualityServices.getBrowser().tabs().getTabHandles().contains(currentTabHandle), "The tab is not closed.");
+ AqualityServices.getBrowser().tabs().switchToLastTab();
+ AqualityServices.getBrowser().refresh();
+ Assert.assertTrue(projectsPage.getProjects().contains(projectName), "The project is not saved.");
+
+ LoggerUtils.step("Go to the created project page. Add test via API (along with log and screenshot of current page).");
+ projectsPage.openProject(projectName);
+ String testName = randomTextGenerator.get();
+ int testId = SiteApiUtils.putTest(
+ randomTextGenerator.get(), projectName, testName, randomTextGenerator.get(), randomTextGenerator.get()
+ );
+ Assert.assertTrue(testsPage.getAllRunningTests().stream().anyMatch(test -> Objects.equals(test.name(), testName)), "The test is not added.");
+ SiteApiUtils.putLogToTest(testId, randomTextGenerator.get());
+ SiteApiUtils.putAttachmentToTest(testId, AqualityServices.getBrowser().getScreenshot(), "image/png");
+ }
+
+}