diff options
Diffstat (limited to 'src/test/java/com/mavlushechka')
-rw-r--r-- | src/test/java/com/mavlushechka/a1qa/project/TestCase1.java | 91 |
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"); + } + +} |