From 2c3456031b0393945bf66ac90d614d2084993b1d Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Wed, 5 Feb 2020 00:16:57 +0300 Subject: [PATCH 01/13] Refactoring --- .../Page => by/academy/it/page}/BasePage.java | 8 +- .../academy/it/page}/LoginPage.java | 34 ++-- .../Page => by/academy/it/page}/MailPage.java | 90 +++++----- .../academy/it/runner/mail}/Runner.java | 5 +- .../Test => by/academy/it/test}/BaseTest.java | 2 +- .../academy/it/test}/LoginTest.java | 14 +- .../academy/it/test}/SendMailTest.java | 12 +- src/main/resources/cloud/suite.xml | 21 +++ src/main/resources/{ => mail}/suite.xml | 6 +- .../TestEmails.html | 109 +++++++++++++ .../TestEmails.xml | 8 + .../TestLogin.html | 89 ++++++++++ .../TestLogin.xml | 6 + .../testng-failed.xml | 18 ++ .../My Selenium Test Suite/TestEmails.html | 30 ++-- .../My Selenium Test Suite/TestEmails.xml | 10 +- .../My Selenium Test Suite/TestLogin.html | 14 +- .../My Selenium Test Suite/TestLogin.xml | 6 +- .../My Selenium Test Suite/testng-failed.xml | 15 +- test-output/emailable-report.html | 24 +-- test-output/index.html | 154 +++++++++--------- .../TEST-Itacademy.Test.LoginTest.xml | 8 +- .../TEST-Itacademy.Test.MyTest.xml | 6 +- .../TEST-Itacademy.Test.SendMailTest.xml | 12 +- .../TEST-by.academy.it.test.LoginTest.xml | 6 + .../TEST-by.academy.it.test.SendMailTest.xml | 8 + .../TestEmails.properties | 1 + .../TestLogin.properties | 1 + .../classes.html | 66 ++++++++ .../groups.html | 1 + .../index.html | 6 + .../main.html | 2 + .../methods-alphabetical.html | 24 +++ .../methods-not-run.html | 2 + .../methods.html | 24 +++ .../reporter-output.html | 1 + .../testng.xml.html | 1 + .../toc.html | 38 +++++ .../old/My Selenium Test Suite/classes.html | 4 +- .../methods-alphabetical.html | 20 +-- .../old/My Selenium Test Suite/methods.html | 20 +-- .../My Selenium Test Suite/testng.xml.html | 2 +- test-output/old/index.html | 4 +- test-output/testng-failed.xml | 20 ++- test-output/testng-results.xml | 40 ++--- 45 files changed, 701 insertions(+), 291 deletions(-) rename src/main/java/{Itacademy/Page => by/academy/it/page}/BasePage.java (89%) rename src/main/java/{Itacademy/Page => by/academy/it/page}/LoginPage.java (54%) rename src/main/java/{Itacademy/Page => by/academy/it/page}/MailPage.java (57%) rename src/main/java/{Itacademy => by/academy/it/runner/mail}/Runner.java (67%) rename src/main/java/{Itacademy/Test => by/academy/it/test}/BaseTest.java (98%) rename src/main/java/{Itacademy/Test => by/academy/it/test}/LoginTest.java (84%) rename src/main/java/{Itacademy/Test => by/academy/it/test}/SendMailTest.java (94%) create mode 100644 src/main/resources/cloud/suite.xml rename src/main/resources/{ => mail}/suite.xml (55%) create mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html create mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml create mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html create mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml create mode 100644 test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml create mode 100644 test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml create mode 100644 test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/classes.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/groups.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/index.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/main.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/methods.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/toc.html diff --git a/src/main/java/Itacademy/Page/BasePage.java b/src/main/java/by/academy/it/page/BasePage.java similarity index 89% rename from src/main/java/Itacademy/Page/BasePage.java rename to src/main/java/by/academy/it/page/BasePage.java index 7212769..bbe0b67 100644 --- a/src/main/java/Itacademy/Page/BasePage.java +++ b/src/main/java/by/academy/it/page/BasePage.java @@ -1,4 +1,4 @@ -package Itacademy.Page; +package by.academy.it.page; import org.openqa.selenium.By; import org.openqa.selenium.StaleElementReferenceException; @@ -26,9 +26,9 @@ public WebDriver getDriver() { } // Ждет пока указанный элемент не появится на странице и не станет видимым (опрос элемента происходит в соответствии с настройками wait) - public WebElement waitVisible(By by) { - wait.until(ExpectedConditions.presenceOfElementLocated(by)); - return wait.until(ExpectedConditions.visibilityOfElementLocated(by)); + public WebElement waitVisible(String xpathLocator) { + wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpathLocator))); + return wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathLocator))); } // from here: https://stackoverflow.com/questions/15237129/webdriverwait-for-an-element-attribute-to-change diff --git a/src/main/java/Itacademy/Page/LoginPage.java b/src/main/java/by/academy/it/page/LoginPage.java similarity index 54% rename from src/main/java/Itacademy/Page/LoginPage.java rename to src/main/java/by/academy/it/page/LoginPage.java index 03c6c16..96b9565 100644 --- a/src/main/java/Itacademy/Page/LoginPage.java +++ b/src/main/java/by/academy/it/page/LoginPage.java @@ -1,21 +1,19 @@ -package Itacademy.Page; +package by.academy.it.page; -import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; public class LoginPage extends BasePage { - private static final By LOGIN_INPUT_LOCATOR = By.xpath("//*[contains(@name, 'Login')]"); - private static final By ENTER_PASSWORD_BUTTON = By.xpath("//button"); - private static final By PASSWORD_FIELD = By.xpath("//*[contains(@name, 'Password') ]"); - private static final By ENTER_BUTTON = By.xpath("//*[contains(@type, 'submit') ]"); - private static final By LOGOUT_LINK = By.xpath("//*[@id='PH_logoutLink']"); - private static final By LOGIN_LINK = By.xpath("//*[@id='PH_authLink']"); - private static final By LOGGED_USER_MAIL = By.xpath("//*[@id='PH_user-email']"); - private static final By LOGIN_ERROR_MESSAGE = By - .xpath("//*[@data-test-id='error-footer-text']"); + private static final String LOGIN_INPUT_LOCATOR = "//*[contains(@name, 'Login')] "; + private static final String ENTER_PASSWORD_BUTTON = "//button "; + private static final String PASSWORD_FIELD = "//*[contains(@name, 'Password') ] "; + private static final String ENTER_BUTTON = "//*[contains(@type, 'submit') ] "; + private static final String LOGOUT_LINK = "//*[@id='PH_logoutLink'] "; + private static final String LOGIN_LINK = "//*[@id='PH_authLink']"; + private static final String LOGGED_USER_MAIL = "//*[@id='PH_user-email']"; + private static final String LOGIN_ERROR_MESSAGE = "//*[@data-test-id='error-footer-text'] "; public LoginPage(WebDriver driver) { super(driver); @@ -32,41 +30,41 @@ public void doLogin(String login, String password) { public void enterPassword(String password) { //вводим пароль - WebElement passwordField = getDriver().findElement(PASSWORD_FIELD); + WebElement passwordField = waitVisible(PASSWORD_FIELD); passwordField.sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.DELETE)); passwordField.sendKeys(password); // ищем кнопку для входа на страницу и жмем ее - WebElement enterButton = getDriver().findElement(ENTER_BUTTON); + WebElement enterButton = waitVisible(ENTER_BUTTON); enterButton.click(); } public void enterLogin(String login) { - WebElement loginField = getDriver().findElement(LOGIN_INPUT_LOCATOR); + WebElement loginField = waitVisible(LOGIN_INPUT_LOCATOR); loginField.sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.DELETE)); loginField.sendKeys(login); // нажимаем по enter password кнопке - WebElement enterPasswordButton = getDriver().findElement(ENTER_PASSWORD_BUTTON); + WebElement enterPasswordButton = waitVisible(ENTER_PASSWORD_BUTTON); enterPasswordButton.click(); } public void doLogout() { - WebElement logoutButton = getDriver().findElement(LOGOUT_LINK); + WebElement logoutButton = waitVisible(LOGOUT_LINK); logoutButton.click(); waitVisible(LOGIN_LINK); } // возвращает email залогиненного usera public String getLoggedUserMail() { - WebElement loggedUserMail = getDriver().findElement(LOGGED_USER_MAIL); + WebElement loggedUserMail = waitVisible(LOGGED_USER_MAIL); return loggedUserMail.getText(); } // возвращает ошибку не верного логина public String getErrorLoginMessage() { - WebElement errorMessage = getDriver().findElement(LOGIN_ERROR_MESSAGE); + WebElement errorMessage = waitVisible(LOGIN_ERROR_MESSAGE); return errorMessage.getText(); } diff --git a/src/main/java/Itacademy/Page/MailPage.java b/src/main/java/by/academy/it/page/MailPage.java similarity index 57% rename from src/main/java/Itacademy/Page/MailPage.java rename to src/main/java/by/academy/it/page/MailPage.java index f39fbd9..9d41f8d 100644 --- a/src/main/java/Itacademy/Page/MailPage.java +++ b/src/main/java/by/academy/it/page/MailPage.java @@ -1,42 +1,33 @@ -package Itacademy.Page; +package by.academy.it.page; -import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; public class MailPage extends BasePage { - private static final By NEW_MAIL_BUTTON = By.xpath("//*[text()=\"Написать письмо\"]"); - private static final By ADDRES_FIELD = By - .xpath("//div[contains(@class, 'fields_container')]//input"); - private static final By TOPIC_FIELD = By - .xpath("//div[contains(@class, 'subject__wrapper')]//input"); - private static final By MAIL_TEXT_FIELD = By.xpath("//div[@role='textbox']"); - private static final By SEND_BUTTON = By.xpath("//span[text()=\"Отправить\"]"); - private static final By SENT_EMAILS_BUTTON = By.xpath("//a[@href=\"/sent/\"]"); - private static final By EMAIL_FROM = By - .xpath("//span[contains(@title, 'kalacheva.tamara@bk.ru')]"); - private static final By INBOX_EMAILS_BUTTON = By.xpath("//a[@href=\"/inbox/\"]"); - private static final By CLOSE_DIALOG_BUTTON = By.xpath("//span[@title='Закрыть']"); - private static final By SELECT_ALL_BUTTON = By.xpath("//span[@title='Выделить все']/parent::div"); - private static final By DELETE_EMAILS_BUTTON = By.xpath("//span[@title=\"Удалить\"]/parent::div"); + private static final String NEW_MAIL_BUTTON = "//*[text()=\"Написать письмо\"]"; + private static final String ADDRES_FIELD = "//div[contains(@class, 'fields_container')]//input"; + private static final String TOPIC_FIELD = "//div[contains(@class, 'subject__wrapper')]//input"; + private static final String MAIL_TEXT_FIELD = "//div[@role='textbox']"; + private static final String SEND_BUTTON = "//span[text()=\"Отправить\"]"; + private static final String SENT_EMAILS_BUTTON = "//a[@href=\"/sent/\"]"; + private static final String EMAIL_FROM = "//span[contains(@title, 'kalacheva.tamara@bk.ru')]"; + private static final String INBOX_EMAILS_BUTTON = "//a[@href=\"/inbox/\"]"; + private static final String CLOSE_DIALOG_BUTTON = "//span[@title='Закрыть']"; + private static final String SELECT_ALL_BUTTON = "//span[@title='Выделить все']/parent::div"; + private static final String DELETE_EMAILS_BUTTON = "//span[@title=\"Удалить\"]/parent::div"; private static final String INBOX_URL = "https://e.mail.ru/inbox/"; - private static final By EMTY_FOLDER_MESSAGE = By.xpath("//div[@class='octopus__text']"); - private static final By CLEAR_EMAILS_ELEMENT = By - .xpath("//div[@class='layer__submit-button']//span[text()='Очистить']"); - private static final By ERROR_MESSAGE = By.xpath("//div[contains(@class, 'rowError')]"); - private static final By CLOSE_NEW_EMAIL_DIALOG = By - .xpath("//button[contains(@title, 'Закрыть')]"); - private static final By CANCEL_EMAEL = By.xpath("//span[text()='Отменить']"); - private static final By SAVE_DRAFT_EMAIL = By.xpath("//span[text()='Сохранить']"); - private static final By NOTIFY_MESSAGE_TEXT = By - .xpath("//span[@class='notify__message__text']"); - private static final By CLOSE_NOTIFY_MESSAGE = By - .xpath("//div[contains(@class,'notify__body')]//div[@class='notify__ico-close']"); - private static final By SEND_EMPTY_BOOTON = By.xpath( - "//div[@data-test-id='confirmation:empty-letter']//span[text()='Отправить']/parent::button"); - private static final By DRAFT_FOLDER = By.xpath("//a[@href='/drafts/']"); - private static final By TRASH_FOLDER = By.xpath("//a[@href='/trash/']"); + private static final String EMTY_FOLDER_MESSAGE = "//div[@class='octopus__text']"; + private static final String CLEAR_EMAILS_ELEMENT = "//div[@class='layer__submit-button']//span[text()='Очистить']"; + private static final String ERROR_MESSAGE = "//div[contains(@class, 'rowError')]"; + private static final String CLOSE_NEW_EMAIL_DIALOG = "//button[contains(@title, 'Закрыть')]"; + private static final String CANCEL_EMAEL = "//span[text()='Отменить']"; + private static final String SAVE_DRAFT_EMAIL = "//span[text()='Сохранить']"; + private static final String NOTIFY_MESSAGE_TEXT = "//span[@class='notify__message__text']"; + private static final String CLOSE_NOTIFY_MESSAGE = "//div[contains(@class,'notify__body')]//div[@class='notify__ico-close']"; + private static final String SEND_EMPTY_BOOTON = "//div[@data-test-id='confirmation:empty-letter']//span[text()='Отправить']/parent::button"; + private static final String DRAFT_FOLDER = "//a[@href='/drafts/']"; + private static final String TRASH_FOLDER = "//a[@href='/trash/']"; private static final String E_PREFIX = "//span[contains(@title, '"; private static final String E_POSTFIX = "')]"; private static final String TITLE = "title"; @@ -80,59 +71,57 @@ public void newMail() { //заполняет адрес письма "Кому"(адрес) public void fillAddres(String addres) { - WebElement addresField = getDriver().findElement(ADDRES_FIELD); + WebElement addresField = waitVisible(ADDRES_FIELD); addresField.sendKeys(addres); } //заполняет тему письма public void fillTopic(String topic) { - WebElement topicField = getDriver().findElement(TOPIC_FIELD); + WebElement topicField = waitVisible(TOPIC_FIELD); topicField.sendKeys(topic); } // заполняет тело письма public void fillMailText(String text) { - WebElement mailText = getDriver().findElement(MAIL_TEXT_FIELD); + WebElement mailText = waitVisible(MAIL_TEXT_FIELD); mailText.sendKeys(text); } //отправляет письмо public void sendMail() { - WebElement sendButton = getDriver().findElement(SEND_BUTTON); + WebElement sendButton = waitVisible(SEND_BUTTON); sendButton.click(); } // заходим в папку отправленные public void goToSentEmails() { - WebElement sentEmailsButton = getDriver().findElement(SENT_EMAILS_BUTTON); + WebElement sentEmailsButton = waitVisible(SENT_EMAILS_BUTTON); sentEmailsButton.click(); } //заходим папку входящие public void goToInboxEmails() { - WebElement InboxEmailsButton = getDriver().findElement(INBOX_EMAILS_BUTTON); + WebElement InboxEmailsButton = waitVisible(INBOX_EMAILS_BUTTON); InboxEmailsButton.click(); } //заходим папку Черновики public void goToDraftEmails() { - getDriver().findElement(DRAFT_FOLDER).click(); + waitVisible(DRAFT_FOLDER).click(); } //заходим папку Удаленные public void goToTrashEmails() { - getDriver().findElement(TRASH_FOLDER).click(); + waitVisible(TRASH_FOLDER).click(); } //проверяем есть ли письмо от указанного адреса public boolean isMailExist(String addres) { boolean result = false; try { - By by = By.xpath(E_PREFIX + addres + E_POSTFIX); - WebElement email = waitVisible(by); - if (email.getAttribute(TITLE).contains(addres)) { - result = true; - } + String xpathString = E_PREFIX + addres + E_POSTFIX; + WebElement email = waitVisible(xpathString); + result = true; } catch (Exception e) { e.printStackTrace(); result = false; @@ -152,7 +141,6 @@ public void deleteAllLetters() { selectALL.click(); WebElement deleteElement = waitVisible(DELETE_EMAILS_BUTTON); deleteElement.click(); - //Кейс для папки ИНБОКС (нужно закрыть диалоговое окно и подтвердить удаление писем) String url = getDriver().getCurrentUrl(); if (url.equals(INBOX_URL)) { @@ -169,7 +157,7 @@ public void deleteAllLetters() { // метод на проверку пустой папки public boolean emptyFolder() { - return getDriver().findElement(EMTY_FOLDER_MESSAGE).isDisplayed(); + return waitVisible(EMTY_FOLDER_MESSAGE).isDisplayed(); } //возвращает текст ошибки "Не указан адрес получателя" @@ -180,17 +168,17 @@ public String getNoAddressErrorMessage() { //закрывает окно нового письма public void closeNewEmailDialog() { - getDriver().findElement(CLOSE_NEW_EMAIL_DIALOG).click(); + waitVisible(CLOSE_NEW_EMAIL_DIALOG).click(); } // нажимает кнопку "Отменить" в новом письме public void cancelEmail() { - getDriver().findElement(CANCEL_EMAEL).click(); + waitVisible(CANCEL_EMAEL).click(); } // сохраняет письмо в черновики public void saveDraftEmail() { - getDriver().findElement(SAVE_DRAFT_EMAIL).click(); + waitVisible(SAVE_DRAFT_EMAIL).click(); //ждем пока не появится сообщение "Сохранено в черновиках в 16:35" waitVisible(NOTIFY_MESSAGE_TEXT); //закрыть уведомление @@ -200,6 +188,6 @@ public void saveDraftEmail() { // получает текст сообщения, что папка пуста public String getEmtyFolderMessage() { - return getDriver().findElement(EMTY_FOLDER_MESSAGE).getText(); + return waitVisible(EMTY_FOLDER_MESSAGE).getText(); } } diff --git a/src/main/java/Itacademy/Runner.java b/src/main/java/by/academy/it/runner/mail/Runner.java similarity index 67% rename from src/main/java/Itacademy/Runner.java rename to src/main/java/by/academy/it/runner/mail/Runner.java index 4759fee..5d579ff 100644 --- a/src/main/java/Itacademy/Runner.java +++ b/src/main/java/by/academy/it/runner/mail/Runner.java @@ -1,4 +1,4 @@ -package Itacademy; +package by.academy.it.runner.mail; import java.util.Arrays; import java.util.List; @@ -11,9 +11,8 @@ public class Runner { public static void main(String[] args) { TestNG testNG = new TestNG(); - List file = Arrays.asList("./src/main/resources/suite.xml"); + List file = Arrays.asList("./src/main/resources/mail/suite.xml"); testNG.setTestSuites(file); testNG.run(); - System.out.println("stop"); } } diff --git a/src/main/java/Itacademy/Test/BaseTest.java b/src/main/java/by/academy/it/test/BaseTest.java similarity index 98% rename from src/main/java/Itacademy/Test/BaseTest.java rename to src/main/java/by/academy/it/test/BaseTest.java index 516a2e9..18cff2c 100644 --- a/src/main/java/Itacademy/Test/BaseTest.java +++ b/src/main/java/by/academy/it/test/BaseTest.java @@ -1,4 +1,4 @@ -package Itacademy.Test; +package by.academy.it.test; import java.util.concurrent.TimeUnit; import org.openqa.selenium.UnexpectedAlertBehaviour; diff --git a/src/main/java/Itacademy/Test/LoginTest.java b/src/main/java/by/academy/it/test/LoginTest.java similarity index 84% rename from src/main/java/Itacademy/Test/LoginTest.java rename to src/main/java/by/academy/it/test/LoginTest.java index 22e6435..0474513 100644 --- a/src/main/java/Itacademy/Test/LoginTest.java +++ b/src/main/java/by/academy/it/test/LoginTest.java @@ -1,39 +1,33 @@ -package Itacademy.Test; +package by.academy.it.test; -import Itacademy.Page.LoginPage; +import by.academy.it.page.LoginPage; import org.testng.Assert; import org.testng.annotations.Test; public class LoginTest extends BaseTest { - @Test(priority = 1) public void loginToMailTest() { getDriver().get(LOGIN_URL); LoginPage loginPage = new LoginPage(getDriver()); - loginPage.doLogin(LOGIN, PASSWORD); - Assert.assertEquals(loginPage.getLoggedUserMail(), LOGIN, "Testing of logging with valid data is failed"); loginPage.doLogout(); - } @Test(priority = 2) public void negativeLoginToMailTest() { getDriver().get("https://account.mail.ru/login"); LoginPage loginPage = new LoginPage(getDriver()); -// проверяем неправильный логин + // проверяем неправильный логин loginPage.enterLogin(INVALID_LOGIN); Assert.assertEquals(loginPage.getErrorLoginMessage(), "Такой аккаунт не зарегистрирован", "Invalid Error message"); - -// проверяем неправильный пароль + // проверяем неправильный пароль loginPage.enterLogin(LOGIN); loginPage.enterPassword(INVALID_PASSWORD); Assert.assertEquals(loginPage.getErrorLoginMessage(), "Неверный пароль, попробуйте ещё раз", "Invalid Error message"); } } - diff --git a/src/main/java/Itacademy/Test/SendMailTest.java b/src/main/java/by/academy/it/test/SendMailTest.java similarity index 94% rename from src/main/java/Itacademy/Test/SendMailTest.java rename to src/main/java/by/academy/it/test/SendMailTest.java index 366bcd8..6723be0 100644 --- a/src/main/java/Itacademy/Test/SendMailTest.java +++ b/src/main/java/by/academy/it/test/SendMailTest.java @@ -1,22 +1,19 @@ -package Itacademy.Test; +package by.academy.it.test; -import Itacademy.Page.LoginPage; -import Itacademy.Page.MailPage; +import by.academy.it.page.LoginPage; +import by.academy.it.page.MailPage; import org.testng.Assert; -import org.testng.annotations.AfterClass; import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class SendMailTest extends BaseTest { - public static final String TOPIC = "Test letter"; + public static final String TOPIC = "test letter"; public static final String TEXT = "Some message "; public static final String EMPTY = ""; public static final String DRAFT_ADDRESS = "draft@mail.ru"; - private LoginPage loginPage; private MailPage mailPage; @@ -76,7 +73,6 @@ public void sendMailNoAddressTest() { //проверяем что появилось сообщение об ошибке(Не указан адрес получателя) Assert.assertEquals(mailPage.getNoAddressErrorMessage(), "Не указан адрес получателя"); mailPage.closeNewEmailDialog(); - } @Test(priority = 6) diff --git a/src/main/resources/cloud/suite.xml b/src/main/resources/cloud/suite.xml new file mode 100644 index 0000000..4a06800 --- /dev/null +++ b/src/main/resources/cloud/suite.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/suite.xml b/src/main/resources/mail/suite.xml similarity index 55% rename from src/main/resources/suite.xml rename to src/main/resources/mail/suite.xml index 5a27d1a..4386ce4 100644 --- a/src/main/resources/suite.xml +++ b/src/main/resources/mail/suite.xml @@ -1,11 +1,11 @@ - + - + @@ -13,7 +13,7 @@ - + diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html new file mode 100644 index 0000000..ff3c66d --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html @@ -0,0 +1,109 @@ + + +TestNG: TestEmails + + + + + + + + +

TestEmails

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:4/0/0
Started on:Wed Feb 05 00:06:21 MSK 2020
Total time:24 seconds (24529 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
DraftMailTest
Test class: by.academy.it.test.SendMailTest
5by.academy.it.test.SendMailTest@6fb554cc
loginToMailTest
Test class: by.academy.it.test.LoginTest
14by.academy.it.test.LoginTest@3498ed
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3by.academy.it.test.LoginTest@3498ed
sendMailNoAddressTest
Test class: by.academy.it.test.SendMailTest
0by.academy.it.test.SendMailTest@6fb554cc
sendMailTest
Test class: by.academy.it.test.SendMailTest
8by.academy.it.test.SendMailTest@6fb554cc
sendMainNoSubjectNoBodyTest
Test class: by.academy.it.test.SendMailTest
3by.academy.it.test.SendMailTest@6fb554cc

+ + \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml new file mode 100644 index 0000000..1829a14 --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html new file mode 100644 index 0000000..1d95bff --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html @@ -0,0 +1,89 @@ + + +TestNG: TestLogin + + + + + + + + +

TestLogin

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:2/0/0
Started on:Wed Feb 05 00:06:03 MSK 2020
Total time:17 seconds (17941 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
loginToMailTest
Test class: by.academy.it.test.LoginTest
14by.academy.it.test.LoginTest@3498ed
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3by.academy.it.test.LoginTest@3498ed

+ + \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml new file mode 100644 index 0000000..e92e0a5 --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml b/test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml new file mode 100644 index 0000000..a6609fa --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/test-output/My Selenium Test Suite/TestEmails.html b/test-output/My Selenium Test Suite/TestEmails.html index 1158aa3..bfe0085 100644 --- a/test-output/My Selenium Test Suite/TestEmails.html +++ b/test-output/My Selenium Test Suite/TestEmails.html @@ -57,9 +57,9 @@

TestEmails

- + - + @@ -75,35 +75,35 @@

TestEmails

Tests passed/Failed/Skipped:4/0/0
Started on:Sat Feb 01 17:16:47 MSK 2020Started on:Tue Feb 04 23:22:49 MSK 2020
Total time:24 seconds (24259 ms)
Total time:25 seconds (25222 ms)
Included groups:
- + - + - + - - + + - + - + - + - + - + - + - + - +
Instance
DraftMailTest
Test class: Itacademy.Test.SendMailTest
DraftMailTest
Test class: by.academy.it.test.SendMailTest
4Itacademy.Test.SendMailTest@6fb554cc
by.academy.it.test.SendMailTest@6fb554cc
loginToMailTest
Test class: Itacademy.Test.LoginTest
loginToMailTest
Test class: by.academy.it.test.LoginTest
15Itacademy.Test.LoginTest@3498ed
19by.academy.it.test.LoginTest@3498ed
negativeLoginToMailTest
Test class: Itacademy.Test.LoginTest
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3Itacademy.Test.LoginTest@3498ed
by.academy.it.test.LoginTest@3498ed
sendMailNoAddressTest
Test class: Itacademy.Test.SendMailTest
sendMailNoAddressTest
Test class: by.academy.it.test.SendMailTest
0Itacademy.Test.SendMailTest@6fb554cc
by.academy.it.test.SendMailTest@6fb554cc
sendMailTest
Test class: Itacademy.Test.SendMailTest
sendMailTest
Test class: by.academy.it.test.SendMailTest
7Itacademy.Test.SendMailTest@6fb554cc
by.academy.it.test.SendMailTest@6fb554cc
sendMainNoSubjectNoBodyTest
Test class: Itacademy.Test.SendMailTest
sendMainNoSubjectNoBodyTest
Test class: by.academy.it.test.SendMailTest
4Itacademy.Test.SendMailTest@6fb554cc
by.academy.it.test.SendMailTest@6fb554cc

\ No newline at end of file diff --git a/test-output/My Selenium Test Suite/TestEmails.xml b/test-output/My Selenium Test Suite/TestEmails.xml index b0f2776..def9772 100644 --- a/test-output/My Selenium Test Suite/TestEmails.xml +++ b/test-output/My Selenium Test Suite/TestEmails.xml @@ -1,8 +1,8 @@ - - - - - + + + + + diff --git a/test-output/My Selenium Test Suite/TestLogin.html b/test-output/My Selenium Test Suite/TestLogin.html index 5b12f7d..1e0ad4b 100644 --- a/test-output/My Selenium Test Suite/TestLogin.html +++ b/test-output/My Selenium Test Suite/TestLogin.html @@ -57,9 +57,9 @@

TestLogin

- + - + @@ -75,15 +75,15 @@

TestLogin

Tests passed/Failed/Skipped:2/0/0
Started on:Sat Feb 01 17:16:28 MSK 2020Started on:Tue Feb 04 23:22:26 MSK 2020
Total time:18 seconds (18676 ms)
Total time:22 seconds (22732 ms)
Included groups:
- + - - + + - + - +
Instance
loginToMailTest
Test class: Itacademy.Test.LoginTest
loginToMailTest
Test class: by.academy.it.test.LoginTest
15Itacademy.Test.LoginTest@3498ed
19by.academy.it.test.LoginTest@3498ed
negativeLoginToMailTest
Test class: Itacademy.Test.LoginTest
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3Itacademy.Test.LoginTest@3498ed
by.academy.it.test.LoginTest@3498ed

\ No newline at end of file diff --git a/test-output/My Selenium Test Suite/TestLogin.xml b/test-output/My Selenium Test Suite/TestLogin.xml index 17ad372..e021bcf 100644 --- a/test-output/My Selenium Test Suite/TestLogin.xml +++ b/test-output/My Selenium Test Suite/TestLogin.xml @@ -1,6 +1,6 @@ - - - + + + diff --git a/test-output/My Selenium Test Suite/testng-failed.xml b/test-output/My Selenium Test Suite/testng-failed.xml index 8777ab3..0e4ff60 100644 --- a/test-output/My Selenium Test Suite/testng-failed.xml +++ b/test-output/My Selenium Test Suite/testng-failed.xml @@ -1,16 +1,17 @@ - + - + - + - + + - + - - + + diff --git a/test-output/emailable-report.html b/test-output/emailable-report.html index 0237c2f..9ae9fde 100644 --- a/test-output/emailable-report.html +++ b/test-output/emailable-report.html @@ -8,19 +8,19 @@ - - - - + + + +
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
My Selenium Test Suite
TestLogin200018 676
TestEmails400024 259
Total600042 935
My Selenium Test Suite for mail.ru mail
TestLogin200017 941
TestEmails400024 529
Total600042 470
- - +
ClassMethodStartTime (ms)
My Selenium Test Suite
TestLogin — passed
Itacademy.Test.LoginTestloginToMailTest158056658885215209
negativeLoginToMailTest15805666040633432
TestEmails — passed
Itacademy.Test.SendMailTestDraftMailTest15805666252524304
sendMailNoAddressTest1580566624246995
sendMailTest15805666119187793
sendMainNoSubjectNoBodyTest15805666197124533
+
ClassMethodStartTime (ms)
My Selenium Test Suite for mail.ru mail
TestLogin — passed
by.academy.it.test.LoginTestloginToMailTest158085036361814059
negativeLoginToMailTest15808503776813854
TestEmails — passed
by.academy.it.test.SendMailTestDraftMailTest15808503995255086
sendMailNoAddressTest1580850398581941
sendMailTest15808503862608403
sendMainNoSubjectNoBodyTest15808503946643917
-

TestLogin

Itacademy.Test.LoginTest#loginToMailTest

back to summary

-

Itacademy.Test.LoginTest#negativeLoginToMailTest

back to summary

-

TestEmails

Itacademy.Test.SendMailTest#DraftMailTest

back to summary

-

Itacademy.Test.SendMailTest#sendMailNoAddressTest

back to summary

-

Itacademy.Test.SendMailTest#sendMailTest

back to summary

-

Itacademy.Test.SendMailTest#sendMainNoSubjectNoBodyTest

back to summary

+

TestLogin

by.academy.it.test.LoginTest#loginToMailTest

back to summary

+

by.academy.it.test.LoginTest#negativeLoginToMailTest

back to summary

+

TestEmails

by.academy.it.test.SendMailTest#DraftMailTest

back to summary

+

by.academy.it.test.SendMailTest#sendMailNoAddressTest

back to summary

+

by.academy.it.test.SendMailTest#sendMailTest

back to summary

+

by.academy.it.test.SendMailTest#sendMainNoSubjectNoBodyTest

back to summary

diff --git a/test-output/index.html b/test-output/index.html index 6a27199..73912f6 100644 --- a/test-output/index.html +++ b/test-output/index.html @@ -37,8 +37,8 @@
-
-
+
+
- Itacademy.Test.SendMailTest + by.academy.it.test.SendMailTest
@@ -177,11 +177,11 @@
-
-
+
+
- Itacademy.Test.LoginTest + by.academy.it.test.LoginTest
@@ -199,34 +199,34 @@
-
-
-
+
+
+
- D:\it_academy\WdFramework_hw\New\src\main\resources\suite.xml + D:\it_academy\WdFramework_hw\New\src\main\resources\mail\suite.xml
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
-<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite">
+<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru mail">
   <test thread-count="1" verbose="2" name="TestLogin">
     <classes>
-      <class name="Itacademy.Test.LoginTest"/>
+      <class name="by.academy.it.test.LoginTest"/>
     </classes>
   </test> <!-- TestLogin -->
   <test thread-count="1" verbose="2" name="TestEmails">
     <classes>
-      <class name="Itacademy.Test.SendMailTest"/>
+      <class name="by.academy.it.test.SendMailTest"/>
     </classes>
   </test> <!-- TestEmails -->
-</suite> <!-- My Selenium Test Suite -->
+</suite> <!-- My Selenium Test Suite for mail.ru mail -->
             
-
+
- Tests for My Selenium Test Suite + Tests for My Selenium Test Suite for mail.ru mail
    @@ -239,22 +239,22 @@
-
+
- Groups for My Selenium Test Suite + Groups for My Selenium Test Suite for mail.ru mail
-
+
- Times for My Selenium Test Suite + Times for My Selenium Test Suite for mail.ru mail
Total running time: 36 seconds -
-
+
+
-
+
- Reporter output for My Selenium Test Suite + Reporter output for My Selenium Test Suite for mail.ru mail
-
+
0 ignored methods
-
+
Methods in chronological order
-
Itacademy.Test.SendMailTest
+
by.academy.it.test.SendMailTest
setup 0 ms
-
Itacademy.Test.LoginTest
+
by.academy.it.test.LoginTest
loginToMailTest - 10872 ms + 10672 ms
negativeLoginToMailTest - 26083 ms + 24735 ms
-
Itacademy.Test.SendMailTest
+
by.academy.it.test.SendMailTest
- beforeClass - 29562 ms + beforeTest + 28620 ms
sendMailTest - 33938 ms + 33314 ms
sendMainNoSubjectNoBodyTest - 41732 ms + 41718 ms
sendMailNoAddressTest - 46266 ms + 45635 ms
DraftMailTest - 47272 ms + 46579 ms
- afterClass - 51576 ms + afterTest + 51665 ms
tearDown - 53826 ms + 53154 ms
diff --git a/test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml b/test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml index 77b00c7..e27fb03 100644 --- a/test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml +++ b/test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/test-output/junitreports/TEST-Itacademy.Test.MyTest.xml b/test-output/junitreports/TEST-Itacademy.Test.MyTest.xml index 7f6c3cd..3b39b19 100644 --- a/test-output/junitreports/TEST-Itacademy.Test.MyTest.xml +++ b/test-output/junitreports/TEST-Itacademy.Test.MyTest.xml @@ -1,5 +1,5 @@ - - - + + + diff --git a/test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml b/test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml index c75ac50..675af67 100644 --- a/test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml +++ b/test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml b/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml new file mode 100644 index 0000000..7257b45 --- /dev/null +++ b/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml b/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml new file mode 100644 index 0000000..a87e46f --- /dev/null +++ b/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties b/test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties new file mode 100644 index 0000000..d35c6cd --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties @@ -0,0 +1 @@ +[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties b/test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties new file mode 100644 index 0000000..d35c6cd --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties @@ -0,0 +1 @@ +[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/classes.html b/test-output/old/My Selenium Test Suite for mail.ru mail/classes.html new file mode 100644 index 0000000..7e118a9 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/classes.html @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Class nameMethod nameGroups
by.academy.it.test.LoginTest  
@Test
 negativeLoginToMailTest 
 loginToMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
by.academy.it.test.SendMailTest  
@Test
 sendMailNoAddressTest 
 sendMainNoSubjectNoBodyTest 
 DraftMailTest 
 sendMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/groups.html b/test-output/old/My Selenium Test Suite for mail.ru mail/groups.html new file mode 100644 index 0000000..199cb3f --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/groups.html @@ -0,0 +1 @@ +

Groups used for this test run

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/index.html b/test-output/old/My Selenium Test Suite for mail.ru mail/index.html new file mode 100644 index 0000000..0d815be --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/index.html @@ -0,0 +1,6 @@ +Results for My Selenium Test Suite for mail.ru mail + + + + + diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/main.html b/test-output/old/My Selenium Test Suite for mail.ru mail/main.html new file mode 100644 index 0000000..0874584 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/main.html @@ -0,0 +1,2 @@ +Results for My Selenium Test Suite for mail.ru mail +Select a result on the left-hand pane. diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html new file mode 100644 index 0000000..1858a59 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html @@ -0,0 +1,24 @@ +

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru mail

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:06:39 0      DraftMailTestmain@1018937824
20/02/05 00:06:44 5087  <<afterTest     main@1018937824
20/02/05 00:06:21 -17959  >>beforeTest     main@1018937824
20/02/05 00:06:03 -35907      loginToMailTestmain@1018937824
20/02/05 00:06:17 -21844      negativeLoginToMailTestmain@1018937824
20/02/05 00:06:38 -944      sendMailNoAddressTestmain@1018937824
20/02/05 00:06:26 -13265      sendMailTestmain@1018937824
20/02/05 00:06:34 -4861      sendMainNoSubjectNoBodyTestmain@1018937824
20/02/05 00:05:52 -46570 >>setup      main@1018937824
20/02/05 00:06:46 6575 <<tearDown      main@1018937824
diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html new file mode 100644 index 0000000..54b14cb --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html @@ -0,0 +1,2 @@ +

Methods that were not run

+
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html new file mode 100644 index 0000000..51b2be8 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html @@ -0,0 +1,24 @@ +

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru mail

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:05:52 0 >>setup      main@1018937824
20/02/05 00:06:03 10663      loginToMailTestmain@1018937824
20/02/05 00:06:17 24726      negativeLoginToMailTestmain@1018937824
20/02/05 00:06:21 28611  >>beforeTest     main@1018937824
20/02/05 00:06:26 33305      sendMailTestmain@1018937824
20/02/05 00:06:34 41709      sendMainNoSubjectNoBodyTestmain@1018937824
20/02/05 00:06:38 45626      sendMailNoAddressTestmain@1018937824
20/02/05 00:06:39 46570      DraftMailTestmain@1018937824
20/02/05 00:06:44 51657  <<afterTest     main@1018937824
20/02/05 00:06:46 53145 <<tearDown      main@1018937824
diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html b/test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html new file mode 100644 index 0000000..063bc2e --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html @@ -0,0 +1 @@ +

Reporter output

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html b/test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html new file mode 100644 index 0000000..bb3fb24 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html @@ -0,0 +1 @@ +testng.xml for My Selenium Test Suite for mail.ru mail<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru mail">
  <test thread-count="1" verbose="2" name="TestLogin">
    <classes>
      <class name="by.academy.it.test.LoginTest"/>
    </classes>
  </test> <!-- TestLogin -->
  <test thread-count="1" verbose="2" name="TestEmails">
    <classes>
      <class name="by.academy.it.test.SendMailTest"/>
    </classes>
  </test> <!-- TestEmails -->
</suite> <!-- My Selenium Test Suite for mail.ru mail -->
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/toc.html b/test-output/old/My Selenium Test Suite for mail.ru mail/toc.html new file mode 100644 index 0000000..a32ea8c --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/toc.html @@ -0,0 +1,38 @@ + + +Results for My Selenium Test Suite for mail.ru mail + + + + +

Results for
My Selenium Test Suite for mail.ru mail

+ + + + + + + + + + +
2 tests2 classes6 methods:
+  chronological
+  alphabetical
+  not run (0)
0 groupreporter outputtestng.xml
+ +

+

+
TestEmails (4/0/0) + Results +
+
+ + +

+

+
TestLogin (2/0/0) + Results +
+
+ \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/classes.html b/test-output/old/My Selenium Test Suite/classes.html index 7c67b06..7e118a9 100644 --- a/test-output/old/My Selenium Test Suite/classes.html +++ b/test-output/old/My Selenium Test Suite/classes.html @@ -4,7 +4,7 @@ Method name Groups -Itacademy.Test.LoginTest +by.academy.it.test.LoginTest    @Test @@ -30,7 +30,7 @@ @AfterClass -Itacademy.Test.SendMailTest +by.academy.it.test.SendMailTest    @Test diff --git a/test-output/old/My Selenium Test Suite/methods-alphabetical.html b/test-output/old/My Selenium Test Suite/methods-alphabetical.html index 5b04392..e7a8889 100644 --- a/test-output/old/My Selenium Test Suite/methods-alphabetical.html +++ b/test-output/old/My Selenium Test Suite/methods-alphabetical.html @@ -1,24 +1,24 @@

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite

(Hover the method name to see the test class name)

- + - + - + - + - + - + - + - + - + - +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/01 17:17:05 0      DraftMailTest
20/02/04 23:23:06 0      DraftMailTest main@1018937824
20/02/01 17:17:09 4305  <<afterClass
20/02/04 23:23:11 4456  <<afterTest      main@1018937824
20/02/01 17:16:47 -17710  >>beforeClass
20/02/04 23:22:49 -17513  >>beforeTest      main@1018937824
20/02/01 17:16:28 -36400      loginToMailTest
20/02/04 23:22:26 -40235      loginToMailTest main@1018937824
20/02/01 17:16:44 -21189      negativeLoginToMailTest
20/02/04 23:22:45 -21201      negativeLoginToMailTest main@1018937824
20/02/01 17:17:04 -1006      sendMailNoAddressTest
20/02/04 23:23:05 -871      sendMailNoAddressTest main@1018937824
20/02/01 17:16:51 -13334      sendMailTest
20/02/04 23:22:53 -12880      sendMailTest main@1018937824
20/02/01 17:16:59 -5540      sendMainNoSubjectNoBodyTest
20/02/04 23:23:01 -5716      sendMainNoSubjectNoBodyTest main@1018937824
20/02/01 17:16:17 -47262 >>setup
20/02/04 23:22:15 -50819 >>setup       main@1018937824
20/02/01 17:17:11 6554 <<tearDown
20/02/04 23:23:14 7713 <<tearDown       main@1018937824
diff --git a/test-output/old/My Selenium Test Suite/methods.html b/test-output/old/My Selenium Test Suite/methods.html index 625802a..19d7a35 100644 --- a/test-output/old/My Selenium Test Suite/methods.html +++ b/test-output/old/My Selenium Test Suite/methods.html @@ -1,24 +1,24 @@

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite

(Hover the method name to see the test class name)

- + - + - + - + - + - + - + - + - + - +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/01 17:16:17 0 >>setup
20/02/04 23:22:15 0 >>setup       main@1018937824
20/02/01 17:16:28 10862      loginToMailTest
20/02/04 23:22:26 10584      loginToMailTest main@1018937824
20/02/01 17:16:44 26073      negativeLoginToMailTest
20/02/04 23:22:45 29618      negativeLoginToMailTest main@1018937824
20/02/01 17:16:47 29552  >>beforeClass
20/02/04 23:22:49 33306  >>beforeTest      main@1018937824
20/02/01 17:16:51 33928      sendMailTest
20/02/04 23:22:53 37939      sendMailTest main@1018937824
20/02/01 17:16:59 41722      sendMainNoSubjectNoBodyTest
20/02/04 23:23:01 45103      sendMainNoSubjectNoBodyTest main@1018937824
20/02/01 17:17:04 46256      sendMailNoAddressTest
20/02/04 23:23:05 49948      sendMailNoAddressTest main@1018937824
20/02/01 17:17:05 47262      DraftMailTest
20/02/04 23:23:06 50819      DraftMailTest main@1018937824
20/02/01 17:17:09 51567  <<afterClass
20/02/04 23:23:11 55275  <<afterTest      main@1018937824
20/02/01 17:17:11 53816 <<tearDown
20/02/04 23:23:14 58532 <<tearDown       main@1018937824
diff --git a/test-output/old/My Selenium Test Suite/testng.xml.html b/test-output/old/My Selenium Test Suite/testng.xml.html index 4a65299..849d34c 100644 --- a/test-output/old/My Selenium Test Suite/testng.xml.html +++ b/test-output/old/My Selenium Test Suite/testng.xml.html @@ -1 +1 @@ -testng.xml for My Selenium Test Suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite">
  <test thread-count="1" verbose="2" name="TestLogin">
    <classes>
      <class name="Itacademy.Test.LoginTest"/>
    </classes>
  </test> <!-- TestLogin -->
  <test thread-count="1" verbose="2" name="TestEmails">
    <classes>
      <class name="Itacademy.Test.SendMailTest"/>
    </classes>
  </test> <!-- TestEmails -->
</suite> <!-- My Selenium Test Suite -->
\ No newline at end of file +testng.xml for My Selenium Test Suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite">
  <test thread-count="1" verbose="2" name="TestLogin">
    <classes>
      <class name="by.academy.it.test.LoginTest"/>
    </classes>
  </test> <!-- TestLogin -->
  <test thread-count="1" verbose="2" name="TestEmails">
    <classes>
      <class name="by.academy.it.test.SendMailTest"/>
    </classes>
  </test> <!-- TestEmails -->
</suite> <!-- My Selenium Test Suite -->
\ No newline at end of file diff --git a/test-output/old/index.html b/test-output/old/index.html index abe7de8..467c6d1 100644 --- a/test-output/old/index.html +++ b/test-output/old/index.html @@ -5,5 +5,5 @@

Test results

- -
SuitePassedFailedSkippedtestng.xml
Total600 
My Selenium Test Suite600Link
+My Selenium Test Suite for mail.ru mail +600Link diff --git a/test-output/testng-failed.xml b/test-output/testng-failed.xml index 8777ab3..a6609fa 100644 --- a/test-output/testng-failed.xml +++ b/test-output/testng-failed.xml @@ -1,16 +1,18 @@ - - + + - + - - + + - + + + - + - - + + diff --git a/test-output/testng-results.xml b/test-output/testng-results.xml index cc2aa26..9b6079c 100644 --- a/test-output/testng-results.xml +++ b/test-output/testng-results.xml @@ -2,56 +2,56 @@ - + - - - + + + - + - + - - - + + + - + - - + + - + - + - + - + - - + + - + - + From dd61a0dd4f1efd8f92914df42143ef15d6aa8723 Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Wed, 5 Feb 2020 00:34:10 +0300 Subject: [PATCH 02/13] Refactoring2 --- .../by/academy/it/runner/CommonRunner.java | 21 + .../by/academy/it/runner/cloud/Runner.java | 18 + .../TestEmails.html | 109 ++++++ .../TestEmails.xml | 8 + .../TestLogin.html | 89 +++++ .../TestLogin.xml | 6 + .../TestEmails.html | 26 +- .../TestEmails.xml | 10 +- .../TestLogin.html | 12 +- .../TestLogin.xml | 6 +- test-output/emailable-report.html | 21 +- test-output/index.html | 361 +++++++++++++++++- .../TEST-by.academy.it.test.LoginTest.xml | 8 +- .../TEST-by.academy.it.test.SendMailTest.xml | 14 +- .../TestEmails.properties | 1 + .../TestLogin.properties | 1 + .../classes.html | 66 ++++ .../groups.html | 1 + .../index.html | 6 + .../main.html | 2 + .../methods-alphabetical.html | 24 ++ .../methods-not-run.html | 2 + .../methods.html | 24 ++ .../reporter-output.html | 1 + .../testng.xml.html | 1 + .../toc.html | 38 ++ .../methods-alphabetical.html | 40 +- .../methods.html | 40 +- test-output/old/index.html | 5 +- test-output/testng-results.xml | 80 +++- 30 files changed, 928 insertions(+), 113 deletions(-) create mode 100644 src/main/java/by/academy/it/runner/CommonRunner.java create mode 100644 src/main/java/by/academy/it/runner/cloud/Runner.java create mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html create mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml create mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html create mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/TestEmails.properties create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/TestLogin.properties create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/classes.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/index.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/main.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html create mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html diff --git a/src/main/java/by/academy/it/runner/CommonRunner.java b/src/main/java/by/academy/it/runner/CommonRunner.java new file mode 100644 index 0000000..dd55ddd --- /dev/null +++ b/src/main/java/by/academy/it/runner/CommonRunner.java @@ -0,0 +1,21 @@ +package by.academy.it.runner; + +import java.util.Arrays; +import java.util.List; +import org.testng.TestNG; +import org.testng.collections.Lists; + +/** + * CommonRunner for all test siute files + */ +public class CommonRunner { + + public static void main(String[] args) { + TestNG testng = new TestNG(); + List suites = Lists.newArrayList(); + suites.add("src/main/resources/mail/suite.xml"); + suites.add("src/main/resources/cloud/suite.xml"); + testng.setTestSuites(suites); + testng.run(); + } +} diff --git a/src/main/java/by/academy/it/runner/cloud/Runner.java b/src/main/java/by/academy/it/runner/cloud/Runner.java new file mode 100644 index 0000000..67f31d1 --- /dev/null +++ b/src/main/java/by/academy/it/runner/cloud/Runner.java @@ -0,0 +1,18 @@ +package by.academy.it.runner.cloud; + +import java.util.Arrays; +import java.util.List; +import org.testng.TestNG; + +/** + * CommonRunner for CLOUD tests + */ +public class Runner { + + public static void main(String[] args) { + TestNG testNG = new TestNG(); + List file = Arrays.asList("./src/main/resources/cloud/suite.xml"); + testNG.setTestSuites(file); + testNG.run(); + } +} diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html b/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html new file mode 100644 index 0000000..5dbf3d0 --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html @@ -0,0 +1,109 @@ + + +TestNG: TestEmails + + + + + + + + +

TestEmails

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:4/0/0
Started on:Wed Feb 05 00:29:25 MSK 2020
Total time:22 seconds (22729 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
DraftMailTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@366e2eef
loginToMailTest
Test class: by.academy.it.test.LoginTest
12by.academy.it.test.LoginTest@4909b8da
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
4by.academy.it.test.LoginTest@4909b8da
sendMailNoAddressTest
Test class: by.academy.it.test.SendMailTest
0by.academy.it.test.SendMailTest@366e2eef
sendMailTest
Test class: by.academy.it.test.SendMailTest
6by.academy.it.test.SendMailTest@366e2eef
sendMainNoSubjectNoBodyTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@366e2eef

+ + \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml b/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml new file mode 100644 index 0000000..9d7d743 --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html b/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html new file mode 100644 index 0000000..5696bc1 --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html @@ -0,0 +1,89 @@ + + +TestNG: TestLogin + + + + + + + + +

TestLogin

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:2/0/0
Started on:Wed Feb 05 00:29:09 MSK 2020
Total time:16 seconds (16710 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
loginToMailTest
Test class: by.academy.it.test.LoginTest
12by.academy.it.test.LoginTest@4909b8da
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
4by.academy.it.test.LoginTest@4909b8da

+ + \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml b/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml new file mode 100644 index 0000000..7987b41 --- /dev/null +++ b/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html index ff3c66d..05aba3d 100644 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html @@ -57,9 +57,9 @@

TestEmails

- + - + @@ -77,33 +77,33 @@

TestEmails

Tests passed/Failed/Skipped:4/0/0
Started on:Wed Feb 05 00:06:21 MSK 2020Started on:Wed Feb 05 00:28:34 MSK 2020
Total time:24 seconds (24529 ms)
Total time:24 seconds (24038 ms)
Included groups:
- - + + - - + + - - + + - + - - + + - - + +
DraftMailTest
Test class: by.academy.it.test.SendMailTest
5by.academy.it.test.SendMailTest@6fb554cc
4by.academy.it.test.SendMailTest@77b52d12
loginToMailTest
Test class: by.academy.it.test.LoginTest
14by.academy.it.test.LoginTest@3498ed
12by.academy.it.test.LoginTest@3d8c7aca
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3by.academy.it.test.LoginTest@3498ed
4by.academy.it.test.LoginTest@3d8c7aca
sendMailNoAddressTest
Test class: by.academy.it.test.SendMailTest
0by.academy.it.test.SendMailTest@6fb554cc
by.academy.it.test.SendMailTest@77b52d12
sendMailTest
Test class: by.academy.it.test.SendMailTest
8by.academy.it.test.SendMailTest@6fb554cc
7by.academy.it.test.SendMailTest@77b52d12
sendMainNoSubjectNoBodyTest
Test class: by.academy.it.test.SendMailTest
3by.academy.it.test.SendMailTest@6fb554cc
4by.academy.it.test.SendMailTest@77b52d12

\ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml index 1829a14..59eeea9 100644 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml @@ -1,8 +1,8 @@ - - - - - + + + + + diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html index 1d95bff..6cffe13 100644 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html @@ -57,9 +57,9 @@

TestLogin

- + - + @@ -77,13 +77,13 @@

TestLogin

Tests passed/Failed/Skipped:2/0/0
Started on:Wed Feb 05 00:06:03 MSK 2020Started on:Wed Feb 05 00:28:18 MSK 2020
Total time:17 seconds (17941 ms)
Total time:16 seconds (16694 ms)
Included groups:
- - + + - - + +
loginToMailTest
Test class: by.academy.it.test.LoginTest
14by.academy.it.test.LoginTest@3498ed
12by.academy.it.test.LoginTest@3d8c7aca
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3by.academy.it.test.LoginTest@3498ed
4by.academy.it.test.LoginTest@3d8c7aca

\ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml index e92e0a5..7fe2001 100644 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml +++ b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml @@ -1,6 +1,6 @@ - - - + + + diff --git a/test-output/emailable-report.html b/test-output/emailable-report.html index 9ae9fde..9b09c66 100644 --- a/test-output/emailable-report.html +++ b/test-output/emailable-report.html @@ -9,12 +9,17 @@ - - - + + + + + +
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
My Selenium Test Suite for mail.ru mail
TestLogin200017 941
TestEmails400024 529
Total600042 470
TestLogin200016 694
TestEmails400024 038
My Selenium Test Suite for mail.ru cloud
TestLogin200016 710
TestEmails400022 729
Total1200080 171
- - +
ClassMethodStartTime (ms)
My Selenium Test Suite for mail.ru mail
TestLogin — passed
by.academy.it.test.LoginTestloginToMailTest158085036361814059
negativeLoginToMailTest15808503776813854
TestEmails — passed
by.academy.it.test.SendMailTestDraftMailTest15808503995255086
sendMailNoAddressTest1580850398581941
sendMailTest15808503862608403
sendMainNoSubjectNoBodyTest15808503946643917
+ + +
ClassMethodStartTime (ms)
My Selenium Test Suite for mail.ru mail
TestLogin — passed
by.academy.it.test.LoginTestloginToMailTest158085169814412388
negativeLoginToMailTest15808517105364272
TestEmails — passed
by.academy.it.test.SendMailTestDraftMailTest15808517322094779
sendMailNoAddressTest1580851731293913
sendMailTest15808517193547240
sendMainNoSubjectNoBodyTest15808517265944698
My Selenium Test Suite for mail.ru cloud
TestLogin — passed
by.academy.it.test.LoginTestloginToMailTest158085174919012545
negativeLoginToMailTest15808517617354163
TestEmails — passed
by.academy.it.test.SendMailTestDraftMailTest15808517817854568
sendMailNoAddressTest1580851780834950
sendMailTest15808517704966023
sendMainNoSubjectNoBodyTest15808517765204314

TestLogin

by.academy.it.test.LoginTest#loginToMailTest

back to summary

by.academy.it.test.LoginTest#negativeLoginToMailTest

back to summary

@@ -22,5 +27,11 @@

TestEmails

by.academy.it.test.SendMailTest#DraftMailTest

by.academy.it.test.SendMailTest#sendMailNoAddressTest

back to summary

by.academy.it.test.SendMailTest#sendMailTest

back to summary

by.academy.it.test.SendMailTest#sendMainNoSubjectNoBodyTest

back to summary

+

TestLogin

by.academy.it.test.LoginTest#loginToMailTest

back to summary

+

by.academy.it.test.LoginTest#negativeLoginToMailTest

back to summary

+

TestEmails

by.academy.it.test.SendMailTest#DraftMailTest

back to summary

+

by.academy.it.test.SendMailTest#sendMailNoAddressTest

back to summary

+

by.academy.it.test.SendMailTest#sendMailTest

back to summary

+

by.academy.it.test.SendMailTest#sendMainNoSubjectNoBodyTest

back to summary

diff --git a/test-output/index.html b/test-output/index.html index 73912f6..15e976c 100644 --- a/test-output/index.html +++ b/test-output/index.html @@ -24,7 +24,7 @@
Test results
- 1 suite + 2 suites
+
@@ -201,6 +305,66 @@
+
+
+
+ + by.academy.it.test.SendMailTest +
+
+
+
+ + + DraftMailTest +
+
+
+
+ + + sendMailNoAddressTest +
+
+
+
+ + + sendMailTest +
+
+
+
+ + + sendMainNoSubjectNoBodyTest +
+
+
+
+
+
+ + by.academy.it.test.LoginTest +
+
+
+
+ + + loginToMailTest +
+
+
+
+ + + negativeLoginToMailTest +
+
+
+
+
D:\it_academy\WdFramework_hw\New\src\main\resources\mail\suite.xml @@ -224,6 +388,29 @@
+
+
+ D:\it_academy\WdFramework_hw\New\src\main\resources\cloud\suite.xml +
+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
+<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru cloud">
+  <test thread-count="1" verbose="2" name="TestLogin">
+    <classes>
+      <class name="by.academy.it.test.LoginTest"/>
+    </classes>
+  </test> <!-- TestLogin -->
+  <test thread-count="1" verbose="2" name="TestEmails">
+    <classes>
+      <class name="by.academy.it.test.SendMailTest"/>
+    </classes>
+  </test> <!-- TestEmails -->
+</suite> <!-- My Selenium Test Suite for mail.ru cloud -->
+            
+
+
Tests for My Selenium Test Suite for mail.ru mail @@ -239,6 +426,21 @@
+
+
+ Tests for My Selenium Test Suite for mail.ru cloud +
+
+
    +
  • + TestLogin (1 class) +
  • +
  • + TestEmails (1 class) +
  • +
+
+
Groups for My Selenium Test Suite for mail.ru mail @@ -246,6 +448,13 @@
+
+
+ Groups for My Selenium Test Suite for mail.ru cloud +
+
+
+
Times for My Selenium Test Suite for mail.ru mail @@ -264,37 +473,86 @@ data.setCell(0, 0, 0) data.setCell(0, 1, 'loginToMailTest') data.setCell(0, 2, 'by.academy.it.test.LoginTest') -data.setCell(0, 3, 14059); +data.setCell(0, 3, 12388); data.setCell(1, 0, 1) data.setCell(1, 1, 'sendMailTest') data.setCell(1, 2, 'by.academy.it.test.SendMailTest') -data.setCell(1, 3, 8403); +data.setCell(1, 3, 7240); data.setCell(2, 0, 2) data.setCell(2, 1, 'DraftMailTest') data.setCell(2, 2, 'by.academy.it.test.SendMailTest') -data.setCell(2, 3, 5086); +data.setCell(2, 3, 4779); data.setCell(3, 0, 3) data.setCell(3, 1, 'sendMainNoSubjectNoBodyTest') data.setCell(3, 2, 'by.academy.it.test.SendMailTest') -data.setCell(3, 3, 3917); +data.setCell(3, 3, 4698); data.setCell(4, 0, 4) data.setCell(4, 1, 'negativeLoginToMailTest') data.setCell(4, 2, 'by.academy.it.test.LoginTest') -data.setCell(4, 3, 3854); +data.setCell(4, 3, 4272); data.setCell(5, 0, 5) data.setCell(5, 1, 'sendMailNoAddressTest') data.setCell(5, 2, 'by.academy.it.test.SendMailTest') -data.setCell(5, 3, 941); +data.setCell(5, 3, 913); window.suiteTableData['My_Selenium_Test_Suite_for_mail_ru_mail']= { tableData: data, tableDiv: 'times-div-My_Selenium_Test_Suite_for_mail_ru_mail'} return data; } - Total running time: 36 seconds + Total running time: 34 seconds
+
+
+ Times for My Selenium Test Suite for mail.ru cloud +
+
+
+ + Total running time: 32 seconds +
+
+
+
+
Reporter output for My Selenium Test Suite for mail.ru mail @@ -302,6 +560,13 @@
+
+
+ Reporter output for My Selenium Test Suite for mail.ru cloud +
+
+
+
0 ignored methods @@ -309,6 +574,13 @@
+
+
+ 0 ignored methods +
+
+
+
Methods in chronological order @@ -325,42 +597,97 @@
by.academy.it.test.LoginTest
loginToMailTest - 10672 ms + 11133 ms +
+
+ negativeLoginToMailTest + 23525 ms +
+
+
+
by.academy.it.test.SendMailTest
+
+ beforeTest + 27824 ms +
+
+ sendMailTest + 32343 ms +
+
+ sendMainNoSubjectNoBodyTest + 39583 ms +
+
+ sendMailNoAddressTest + 44282 ms +
+
+ DraftMailTest + 45198 ms +
+
+ afterTest + 49977 ms +
+
+ tearDown + 51866 ms +
+
+
+
+
+ Methods in chronological order +
+
+
+
by.academy.it.test.SendMailTest
+
+ setup + 0 ms +
+
+
+
by.academy.it.test.LoginTest
+
+ loginToMailTest + 9397 ms
negativeLoginToMailTest - 24735 ms + 21942 ms
by.academy.it.test.SendMailTest
beforeTest - 28620 ms + 26113 ms
sendMailTest - 33314 ms + 30703 ms
sendMainNoSubjectNoBodyTest - 41718 ms + 36727 ms
sendMailNoAddressTest - 45635 ms + 41041 ms
DraftMailTest - 46579 ms + 41992 ms
afterTest - 51665 ms + 46561 ms
tearDown - 53154 ms + 48850 ms
diff --git a/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml b/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml index 7257b45..fd88956 100644 --- a/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml +++ b/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml @@ -1,6 +1,8 @@ - - - + + + + + diff --git a/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml b/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml index a87e46f..fd7a90e 100644 --- a/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml +++ b/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml @@ -1,8 +1,12 @@ - - - - - + + + + + + + + + diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/TestEmails.properties b/test-output/old/My Selenium Test Suite for mail.ru cloud/TestEmails.properties new file mode 100644 index 0000000..d35c6cd --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/TestEmails.properties @@ -0,0 +1 @@ +[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/TestLogin.properties b/test-output/old/My Selenium Test Suite for mail.ru cloud/TestLogin.properties new file mode 100644 index 0000000..d35c6cd --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/TestLogin.properties @@ -0,0 +1 @@ +[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/classes.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/classes.html new file mode 100644 index 0000000..7e118a9 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/classes.html @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Class nameMethod nameGroups
by.academy.it.test.LoginTest  
@Test
 negativeLoginToMailTest 
 loginToMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
by.academy.it.test.SendMailTest  
@Test
 sendMailNoAddressTest 
 sendMainNoSubjectNoBodyTest 
 DraftMailTest 
 sendMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html new file mode 100644 index 0000000..199cb3f --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html @@ -0,0 +1 @@ +

Groups used for this test run

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/index.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/index.html new file mode 100644 index 0000000..e618d44 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/index.html @@ -0,0 +1,6 @@ +Results for My Selenium Test Suite for mail.ru cloud + + + + + diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/main.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/main.html new file mode 100644 index 0000000..206c1a7 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/main.html @@ -0,0 +1,2 @@ +Results for My Selenium Test Suite for mail.ru cloud +Select a result on the left-hand pane. diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html new file mode 100644 index 0000000..2a6fc8e --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html @@ -0,0 +1,24 @@ +

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru cloud

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:29:41 0      DraftMailTestmain@750044075
20/02/05 00:29:46 4569  <<afterTest     main@750044075
20/02/05 00:29:25 -15878  >>beforeTest     main@750044075
20/02/05 00:29:09 -32595      loginToMailTestmain@750044075
20/02/05 00:29:21 -20050      negativeLoginToMailTestmain@750044075
20/02/05 00:29:40 -951      sendMailNoAddressTestmain@750044075
20/02/05 00:29:30 -11289      sendMailTestmain@750044075
20/02/05 00:29:36 -5265      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:28:59 -41992 >>setup      main@750044075
20/02/05 00:29:48 6858 <<tearDown      main@750044075
diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html new file mode 100644 index 0000000..54b14cb --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html @@ -0,0 +1,2 @@ +

Methods that were not run

+
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html new file mode 100644 index 0000000..8fa0cc0 --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html @@ -0,0 +1,24 @@ +

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru cloud

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:28:59 0 >>setup      main@750044075
20/02/05 00:29:09 9397      loginToMailTestmain@750044075
20/02/05 00:29:21 21942      negativeLoginToMailTestmain@750044075
20/02/05 00:29:25 26114  >>beforeTest     main@750044075
20/02/05 00:29:30 30703      sendMailTestmain@750044075
20/02/05 00:29:36 36727      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:29:40 41041      sendMailNoAddressTestmain@750044075
20/02/05 00:29:41 41992      DraftMailTestmain@750044075
20/02/05 00:29:46 46561  <<afterTest     main@750044075
20/02/05 00:29:48 48850 <<tearDown      main@750044075
diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html new file mode 100644 index 0000000..063bc2e --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html @@ -0,0 +1 @@ +

Reporter output

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html new file mode 100644 index 0000000..cefbf8c --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html @@ -0,0 +1 @@ +testng.xml for My Selenium Test Suite for mail.ru cloud<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru cloud">
  <test thread-count="1" verbose="2" name="TestLogin">
    <classes>
      <class name="by.academy.it.test.LoginTest"/>
    </classes>
  </test> <!-- TestLogin -->
  <test thread-count="1" verbose="2" name="TestEmails">
    <classes>
      <class name="by.academy.it.test.SendMailTest"/>
    </classes>
  </test> <!-- TestEmails -->
</suite> <!-- My Selenium Test Suite for mail.ru cloud -->
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html new file mode 100644 index 0000000..518717b --- /dev/null +++ b/test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html @@ -0,0 +1,38 @@ + + +Results for My Selenium Test Suite for mail.ru cloud + + + + +

Results for
My Selenium Test Suite for mail.ru cloud

+ + + + + + + + + + +
2 tests2 classes6 methods:
+  chronological
+  alphabetical
+  not run (0)
0 groupreporter outputtestng.xml
+ +

+

+
TestEmails (4/0/0) + Results +
+
+ + +

+

+
TestLogin (2/0/0) + Results +
+
+ \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html index 1858a59..597fa26 100644 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html @@ -1,24 +1,24 @@

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru mail

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:06:39 0      DraftMailTestmain@1018937824
20/02/05 00:06:44 5087  <<afterTest     main@1018937824
20/02/05 00:06:21 -17959  >>beforeTest     main@1018937824
20/02/05 00:06:03 -35907      loginToMailTestmain@1018937824
20/02/05 00:06:17 -21844      negativeLoginToMailTestmain@1018937824
20/02/05 00:06:38 -944      sendMailNoAddressTestmain@1018937824
20/02/05 00:06:26 -13265      sendMailTestmain@1018937824
20/02/05 00:06:34 -4861      sendMainNoSubjectNoBodyTestmain@1018937824
20/02/05 00:05:52 -46570 >>setup      main@1018937824
20/02/05 00:06:46 6575 <<tearDown      main@1018937824
20/02/05 00:28:52 0      DraftMailTestmain@750044075
20/02/05 00:28:56 4780  <<afterTest     main@750044075
20/02/05 00:28:34 -17372  >>beforeTest     main@750044075
20/02/05 00:28:18 -34064      loginToMailTestmain@750044075
20/02/05 00:28:30 -21672      negativeLoginToMailTestmain@750044075
20/02/05 00:28:51 -915      sendMailNoAddressTestmain@750044075
20/02/05 00:28:39 -12854      sendMailTestmain@750044075
20/02/05 00:28:46 -5614      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:28:07 -45183 >>setup      main@750044075
20/02/05 00:28:58 6670 <<tearDown      main@750044075
diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html index 51b2be8..aeafdf3 100644 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html +++ b/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html @@ -1,24 +1,24 @@

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru mail

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:05:52 0 >>setup      main@1018937824
20/02/05 00:06:03 10663      loginToMailTestmain@1018937824
20/02/05 00:06:17 24726      negativeLoginToMailTestmain@1018937824
20/02/05 00:06:21 28611  >>beforeTest     main@1018937824
20/02/05 00:06:26 33305      sendMailTestmain@1018937824
20/02/05 00:06:34 41709      sendMainNoSubjectNoBodyTestmain@1018937824
20/02/05 00:06:38 45626      sendMailNoAddressTestmain@1018937824
20/02/05 00:06:39 46570      DraftMailTestmain@1018937824
20/02/05 00:06:44 51657  <<afterTest     main@1018937824
20/02/05 00:06:46 53145 <<tearDown      main@1018937824
20/02/05 00:28:07 0 >>setup      main@750044075
20/02/05 00:28:18 11119      loginToMailTestmain@750044075
20/02/05 00:28:30 23511      negativeLoginToMailTestmain@750044075
20/02/05 00:28:34 27811  >>beforeTest     main@750044075
20/02/05 00:28:39 32329      sendMailTestmain@750044075
20/02/05 00:28:46 39569      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:28:51 44268      sendMailNoAddressTestmain@750044075
20/02/05 00:28:52 45183      DraftMailTestmain@750044075
20/02/05 00:28:56 49963  <<afterTest     main@750044075
20/02/05 00:28:58 51853 <<tearDown      main@750044075
diff --git a/test-output/old/index.html b/test-output/old/index.html index 467c6d1..d42b624 100644 --- a/test-output/old/index.html +++ b/test-output/old/index.html @@ -4,6 +4,7 @@

Test results

- + -
SuitePassedFailedSkippedtestng.xml
Total600 
Total1200 
My Selenium Test Suite for mail.ru mail600Link
+600LinkMy Selenium Test Suite for mail.ru cloud +600Link diff --git a/test-output/testng-results.xml b/test-output/testng-results.xml index 9b6079c..0374901 100644 --- a/test-output/testng-results.xml +++ b/test-output/testng-results.xml @@ -1,57 +1,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From af5dee52560affdd4cb65671046b5bb9d97cd2a1 Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Wed, 5 Feb 2020 00:52:55 +0300 Subject: [PATCH 03/13] Refactoring3 --- .gitignore | 1 + .../java/by/academy/it/test/SendMailTest.java | 2 +- .../TestEmails.html | 109 --- .../TestEmails.xml | 8 - .../TestLogin.html | 89 --- .../TestLogin.xml | 6 - .../TestEmails.html | 109 --- .../TestEmails.xml | 8 - .../TestLogin.html | 89 --- .../TestLogin.xml | 6 - .../testng-failed.xml | 18 - .../My Selenium Test Suite/TestEmails.html | 109 --- .../My Selenium Test Suite/TestEmails.xml | 8 - .../My Selenium Test Suite/TestLogin.html | 89 --- .../My Selenium Test Suite/TestLogin.xml | 6 - .../My Selenium Test Suite/testng-failed.xml | 17 - test-output/bullet_point.png | Bin 356 -> 0 bytes test-output/collapseall.gif | Bin 157 -> 0 bytes test-output/emailable-report.html | 37 - test-output/failed.png | Bin 977 -> 0 bytes test-output/index.html | 697 ------------------ test-output/jquery-1.7.1.min.js | 4 - .../TEST-Itacademy.Test.LoginTest.xml | 6 - .../TEST-Itacademy.Test.MyTest.xml | 5 - .../TEST-Itacademy.Test.SendMailTest.xml | 8 - .../TEST-by.academy.it.test.LoginTest.xml | 8 - .../TEST-by.academy.it.test.SendMailTest.xml | 12 - test-output/navigator-bullet.png | Bin 352 -> 0 bytes .../TestEmails.properties | 1 - .../TestLogin.properties | 1 - .../classes.html | 66 -- .../groups.html | 1 - .../index.html | 6 - .../main.html | 2 - .../methods-alphabetical.html | 24 - .../methods-not-run.html | 2 - .../methods.html | 24 - .../reporter-output.html | 1 - .../testng.xml.html | 1 - .../toc.html | 38 - .../TestEmails.properties | 1 - .../TestLogin.properties | 1 - .../classes.html | 66 -- .../groups.html | 1 - .../index.html | 6 - .../main.html | 2 - .../methods-alphabetical.html | 24 - .../methods-not-run.html | 2 - .../methods.html | 24 - .../reporter-output.html | 1 - .../testng.xml.html | 1 - .../toc.html | 38 - .../TestEmails.properties | 1 - .../TestLogin.properties | 1 - .../old/My Selenium Test Suite/classes.html | 66 -- .../old/My Selenium Test Suite/groups.html | 1 - .../old/My Selenium Test Suite/index.html | 6 - .../old/My Selenium Test Suite/main.html | 2 - .../methods-alphabetical.html | 24 - .../methods-not-run.html | 2 - .../old/My Selenium Test Suite/methods.html | 24 - .../reporter-output.html | 1 - .../My Selenium Test Suite/testng.xml.html | 1 - .../old/My Selenium Test Suite/toc.html | 38 - test-output/old/index.html | 10 - test-output/passed.png | Bin 1019 -> 0 bytes test-output/skipped.png | Bin 967 -> 0 bytes test-output/testng-failed.xml | 18 - test-output/testng-reports.css | 309 -------- test-output/testng-reports.js | 122 --- test-output/testng-results.xml | 109 --- test-output/testng.css | 9 - 72 files changed, 2 insertions(+), 2527 deletions(-) delete mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html delete mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml delete mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html delete mode 100644 test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml delete mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html delete mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml delete mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html delete mode 100644 test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml delete mode 100644 test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml delete mode 100644 test-output/My Selenium Test Suite/TestEmails.html delete mode 100644 test-output/My Selenium Test Suite/TestEmails.xml delete mode 100644 test-output/My Selenium Test Suite/TestLogin.html delete mode 100644 test-output/My Selenium Test Suite/TestLogin.xml delete mode 100644 test-output/My Selenium Test Suite/testng-failed.xml delete mode 100644 test-output/bullet_point.png delete mode 100644 test-output/collapseall.gif delete mode 100644 test-output/emailable-report.html delete mode 100644 test-output/failed.png delete mode 100644 test-output/index.html delete mode 100644 test-output/jquery-1.7.1.min.js delete mode 100644 test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml delete mode 100644 test-output/junitreports/TEST-Itacademy.Test.MyTest.xml delete mode 100644 test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml delete mode 100644 test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml delete mode 100644 test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml delete mode 100644 test-output/navigator-bullet.png delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/TestEmails.properties delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/TestLogin.properties delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/classes.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/index.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/main.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/classes.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/groups.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/index.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/main.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/methods.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html delete mode 100644 test-output/old/My Selenium Test Suite for mail.ru mail/toc.html delete mode 100644 test-output/old/My Selenium Test Suite/TestEmails.properties delete mode 100644 test-output/old/My Selenium Test Suite/TestLogin.properties delete mode 100644 test-output/old/My Selenium Test Suite/classes.html delete mode 100644 test-output/old/My Selenium Test Suite/groups.html delete mode 100644 test-output/old/My Selenium Test Suite/index.html delete mode 100644 test-output/old/My Selenium Test Suite/main.html delete mode 100644 test-output/old/My Selenium Test Suite/methods-alphabetical.html delete mode 100644 test-output/old/My Selenium Test Suite/methods-not-run.html delete mode 100644 test-output/old/My Selenium Test Suite/methods.html delete mode 100644 test-output/old/My Selenium Test Suite/reporter-output.html delete mode 100644 test-output/old/My Selenium Test Suite/testng.xml.html delete mode 100644 test-output/old/My Selenium Test Suite/toc.html delete mode 100644 test-output/old/index.html delete mode 100644 test-output/passed.png delete mode 100644 test-output/skipped.png delete mode 100644 test-output/testng-failed.xml delete mode 100644 test-output/testng-reports.css delete mode 100644 test-output/testng-reports.js delete mode 100644 test-output/testng-results.xml delete mode 100644 test-output/testng.css diff --git a/.gitignore b/.gitignore index 09af494..d5557dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /target/ + # Eclipse STS artifacts **/.settings/** **/.classpath diff --git a/src/main/java/by/academy/it/test/SendMailTest.java b/src/main/java/by/academy/it/test/SendMailTest.java index 6723be0..ebb0cc3 100644 --- a/src/main/java/by/academy/it/test/SendMailTest.java +++ b/src/main/java/by/academy/it/test/SendMailTest.java @@ -76,7 +76,7 @@ public void sendMailNoAddressTest() { } @Test(priority = 6) - public void DraftMailTest() { + public void draftMailTest() { //создаем черновик письма и сохрняем его mailPage.createDraftMail(DRAFT_ADDRESS, TOPIC, TEXT); mailPage.closeNewEmailDialog(); diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html b/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html deleted file mode 100644 index 5dbf3d0..0000000 --- a/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.html +++ /dev/null @@ -1,109 +0,0 @@ - - -TestNG: TestEmails - - - - - - - - -

TestEmails

- - - - - - - - - - - -
Tests passed/Failed/Skipped:4/0/0
Started on:Wed Feb 05 00:29:25 MSK 2020
Total time:22 seconds (22729 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
DraftMailTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@366e2eef
loginToMailTest
Test class: by.academy.it.test.LoginTest
12by.academy.it.test.LoginTest@4909b8da
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
4by.academy.it.test.LoginTest@4909b8da
sendMailNoAddressTest
Test class: by.academy.it.test.SendMailTest
0by.academy.it.test.SendMailTest@366e2eef
sendMailTest
Test class: by.academy.it.test.SendMailTest
6by.academy.it.test.SendMailTest@366e2eef
sendMainNoSubjectNoBodyTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@366e2eef

- - \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml b/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml deleted file mode 100644 index 9d7d743..0000000 --- a/test-output/My Selenium Test Suite for mail.ru cloud/TestEmails.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html b/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html deleted file mode 100644 index 5696bc1..0000000 --- a/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.html +++ /dev/null @@ -1,89 +0,0 @@ - - -TestNG: TestLogin - - - - - - - - -

TestLogin

- - - - - - - - - - - -
Tests passed/Failed/Skipped:2/0/0
Started on:Wed Feb 05 00:29:09 MSK 2020
Total time:16 seconds (16710 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
loginToMailTest
Test class: by.academy.it.test.LoginTest
12by.academy.it.test.LoginTest@4909b8da
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
4by.academy.it.test.LoginTest@4909b8da

- - \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml b/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml deleted file mode 100644 index 7987b41..0000000 --- a/test-output/My Selenium Test Suite for mail.ru cloud/TestLogin.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html deleted file mode 100644 index 05aba3d..0000000 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.html +++ /dev/null @@ -1,109 +0,0 @@ - - -TestNG: TestEmails - - - - - - - - -

TestEmails

- - - - - - - - - - - -
Tests passed/Failed/Skipped:4/0/0
Started on:Wed Feb 05 00:28:34 MSK 2020
Total time:24 seconds (24038 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
DraftMailTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@77b52d12
loginToMailTest
Test class: by.academy.it.test.LoginTest
12by.academy.it.test.LoginTest@3d8c7aca
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
4by.academy.it.test.LoginTest@3d8c7aca
sendMailNoAddressTest
Test class: by.academy.it.test.SendMailTest
0by.academy.it.test.SendMailTest@77b52d12
sendMailTest
Test class: by.academy.it.test.SendMailTest
7by.academy.it.test.SendMailTest@77b52d12
sendMainNoSubjectNoBodyTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@77b52d12

- - \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml b/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml deleted file mode 100644 index 59eeea9..0000000 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestEmails.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html deleted file mode 100644 index 6cffe13..0000000 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.html +++ /dev/null @@ -1,89 +0,0 @@ - - -TestNG: TestLogin - - - - - - - - -

TestLogin

- - - - - - - - - - - -
Tests passed/Failed/Skipped:2/0/0
Started on:Wed Feb 05 00:28:18 MSK 2020
Total time:16 seconds (16694 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
loginToMailTest
Test class: by.academy.it.test.LoginTest
12by.academy.it.test.LoginTest@3d8c7aca
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
4by.academy.it.test.LoginTest@3d8c7aca

- - \ No newline at end of file diff --git a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml b/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml deleted file mode 100644 index 7fe2001..0000000 --- a/test-output/My Selenium Test Suite for mail.ru mail/TestLogin.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml b/test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml deleted file mode 100644 index a6609fa..0000000 --- a/test-output/My Selenium Test Suite for mail.ru mail/testng-failed.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/test-output/My Selenium Test Suite/TestEmails.html b/test-output/My Selenium Test Suite/TestEmails.html deleted file mode 100644 index bfe0085..0000000 --- a/test-output/My Selenium Test Suite/TestEmails.html +++ /dev/null @@ -1,109 +0,0 @@ - - -TestNG: TestEmails - - - - - - - - -

TestEmails

- - - - - - - - - - - -
Tests passed/Failed/Skipped:4/0/0
Started on:Tue Feb 04 23:22:49 MSK 2020
Total time:25 seconds (25222 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
DraftMailTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@6fb554cc
loginToMailTest
Test class: by.academy.it.test.LoginTest
19by.academy.it.test.LoginTest@3498ed
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3by.academy.it.test.LoginTest@3498ed
sendMailNoAddressTest
Test class: by.academy.it.test.SendMailTest
0by.academy.it.test.SendMailTest@6fb554cc
sendMailTest
Test class: by.academy.it.test.SendMailTest
7by.academy.it.test.SendMailTest@6fb554cc
sendMainNoSubjectNoBodyTest
Test class: by.academy.it.test.SendMailTest
4by.academy.it.test.SendMailTest@6fb554cc

- - \ No newline at end of file diff --git a/test-output/My Selenium Test Suite/TestEmails.xml b/test-output/My Selenium Test Suite/TestEmails.xml deleted file mode 100644 index def9772..0000000 --- a/test-output/My Selenium Test Suite/TestEmails.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/test-output/My Selenium Test Suite/TestLogin.html b/test-output/My Selenium Test Suite/TestLogin.html deleted file mode 100644 index 1e0ad4b..0000000 --- a/test-output/My Selenium Test Suite/TestLogin.html +++ /dev/null @@ -1,89 +0,0 @@ - - -TestNG: TestLogin - - - - - - - - -

TestLogin

- - - - - - - - - - - -
Tests passed/Failed/Skipped:2/0/0
Started on:Tue Feb 04 23:22:26 MSK 2020
Total time:22 seconds (22732 ms)
Included groups:
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
loginToMailTest
Test class: by.academy.it.test.LoginTest
19by.academy.it.test.LoginTest@3498ed
negativeLoginToMailTest
Test class: by.academy.it.test.LoginTest
3by.academy.it.test.LoginTest@3498ed

- - \ No newline at end of file diff --git a/test-output/My Selenium Test Suite/TestLogin.xml b/test-output/My Selenium Test Suite/TestLogin.xml deleted file mode 100644 index e021bcf..0000000 --- a/test-output/My Selenium Test Suite/TestLogin.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/test-output/My Selenium Test Suite/testng-failed.xml b/test-output/My Selenium Test Suite/testng-failed.xml deleted file mode 100644 index 0e4ff60..0000000 --- a/test-output/My Selenium Test Suite/testng-failed.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/test-output/bullet_point.png b/test-output/bullet_point.png deleted file mode 100644 index 176e6d5b3d64d032e76c493e5811a1cf839220b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! diff --git a/test-output/emailable-report.html b/test-output/emailable-report.html deleted file mode 100644 index 9b09c66..0000000 --- a/test-output/emailable-report.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - -TestNG Report - - - - - - - - - - - - -
Test# Passed# Skipped# Retried# FailedTime (ms)Included GroupsExcluded Groups
My Selenium Test Suite for mail.ru mail
TestLogin200016 694
TestEmails400024 038
My Selenium Test Suite for mail.ru cloud
TestLogin200016 710
TestEmails400022 729
Total1200080 171
- - - - -
ClassMethodStartTime (ms)
My Selenium Test Suite for mail.ru mail
TestLogin — passed
by.academy.it.test.LoginTestloginToMailTest158085169814412388
negativeLoginToMailTest15808517105364272
TestEmails — passed
by.academy.it.test.SendMailTestDraftMailTest15808517322094779
sendMailNoAddressTest1580851731293913
sendMailTest15808517193547240
sendMainNoSubjectNoBodyTest15808517265944698
My Selenium Test Suite for mail.ru cloud
TestLogin — passed
by.academy.it.test.LoginTestloginToMailTest158085174919012545
negativeLoginToMailTest15808517617354163
TestEmails — passed
by.academy.it.test.SendMailTestDraftMailTest15808517817854568
sendMailNoAddressTest1580851780834950
sendMailTest15808517704966023
sendMainNoSubjectNoBodyTest15808517765204314
-

TestLogin

by.academy.it.test.LoginTest#loginToMailTest

back to summary

-

by.academy.it.test.LoginTest#negativeLoginToMailTest

back to summary

-

TestEmails

by.academy.it.test.SendMailTest#DraftMailTest

back to summary

-

by.academy.it.test.SendMailTest#sendMailNoAddressTest

back to summary

-

by.academy.it.test.SendMailTest#sendMailTest

back to summary

-

by.academy.it.test.SendMailTest#sendMainNoSubjectNoBodyTest

back to summary

-

TestLogin

by.academy.it.test.LoginTest#loginToMailTest

back to summary

-

by.academy.it.test.LoginTest#negativeLoginToMailTest

back to summary

-

TestEmails

by.academy.it.test.SendMailTest#DraftMailTest

back to summary

-

by.academy.it.test.SendMailTest#sendMailNoAddressTest

back to summary

-

by.academy.it.test.SendMailTest#sendMailTest

back to summary

-

by.academy.it.test.SendMailTest#sendMainNoSubjectNoBodyTest

back to summary

- - diff --git a/test-output/failed.png b/test-output/failed.png deleted file mode 100644 index c117be59a9ecd1da15ebf48f6b7f53496302a7cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# diff --git a/test-output/index.html b/test-output/index.html deleted file mode 100644 index 15e976c..0000000 --- a/test-output/index.html +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - TestNG reports - - - - - - - - - - -
- Test results -
- 2 suites -
- -
-
-
-
-
- - by.academy.it.test.SendMailTest -
-
-
-
- - - DraftMailTest -
-
-
-
- - - sendMailNoAddressTest -
-
-
-
- - - sendMailTest -
-
-
-
- - - sendMainNoSubjectNoBodyTest -
-
-
-
-
-
- - by.academy.it.test.LoginTest -
-
-
-
- - - loginToMailTest -
-
-
-
- - - negativeLoginToMailTest -
-
-
-
-
-
-
-
- - by.academy.it.test.SendMailTest -
-
-
-
- - - DraftMailTest -
-
-
-
- - - sendMailNoAddressTest -
-
-
-
- - - sendMailTest -
-
-
-
- - - sendMainNoSubjectNoBodyTest -
-
-
-
-
-
- - by.academy.it.test.LoginTest -
-
-
-
- - - loginToMailTest -
-
-
-
- - - negativeLoginToMailTest -
-
-
-
-
-
-
- D:\it_academy\WdFramework_hw\New\src\main\resources\mail\suite.xml -
-
-
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
-<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru mail">
-  <test thread-count="1" verbose="2" name="TestLogin">
-    <classes>
-      <class name="by.academy.it.test.LoginTest"/>
-    </classes>
-  </test> <!-- TestLogin -->
-  <test thread-count="1" verbose="2" name="TestEmails">
-    <classes>
-      <class name="by.academy.it.test.SendMailTest"/>
-    </classes>
-  </test> <!-- TestEmails -->
-</suite> <!-- My Selenium Test Suite for mail.ru mail -->
-            
-
-
-
-
- D:\it_academy\WdFramework_hw\New\src\main\resources\cloud\suite.xml -
-
-
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
-<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru cloud">
-  <test thread-count="1" verbose="2" name="TestLogin">
-    <classes>
-      <class name="by.academy.it.test.LoginTest"/>
-    </classes>
-  </test> <!-- TestLogin -->
-  <test thread-count="1" verbose="2" name="TestEmails">
-    <classes>
-      <class name="by.academy.it.test.SendMailTest"/>
-    </classes>
-  </test> <!-- TestEmails -->
-</suite> <!-- My Selenium Test Suite for mail.ru cloud -->
-            
-
-
-
-
- Tests for My Selenium Test Suite for mail.ru mail -
-
-
    -
  • - TestLogin (1 class) -
  • -
  • - TestEmails (1 class) -
  • -
-
-
-
-
- Tests for My Selenium Test Suite for mail.ru cloud -
-
-
    -
  • - TestLogin (1 class) -
  • -
  • - TestEmails (1 class) -
  • -
-
-
-
-
- Groups for My Selenium Test Suite for mail.ru mail -
-
-
-
-
-
- Groups for My Selenium Test Suite for mail.ru cloud -
-
-
-
-
-
- Times for My Selenium Test Suite for mail.ru mail -
-
-
- - Total running time: 34 seconds -
-
-
-
-
-
-
- Times for My Selenium Test Suite for mail.ru cloud -
-
-
- - Total running time: 32 seconds -
-
-
-
-
-
-
- Reporter output for My Selenium Test Suite for mail.ru mail -
-
-
-
-
-
- Reporter output for My Selenium Test Suite for mail.ru cloud -
-
-
-
-
-
- 0 ignored methods -
-
-
-
-
-
- 0 ignored methods -
-
-
-
-
-
- Methods in chronological order -
-
-
-
by.academy.it.test.SendMailTest
-
- setup - 0 ms -
-
-
-
by.academy.it.test.LoginTest
-
- loginToMailTest - 11133 ms -
-
- negativeLoginToMailTest - 23525 ms -
-
-
-
by.academy.it.test.SendMailTest
-
- beforeTest - 27824 ms -
-
- sendMailTest - 32343 ms -
-
- sendMainNoSubjectNoBodyTest - 39583 ms -
-
- sendMailNoAddressTest - 44282 ms -
-
- DraftMailTest - 45198 ms -
-
- afterTest - 49977 ms -
-
- tearDown - 51866 ms -
-
-
-
-
- Methods in chronological order -
-
-
-
by.academy.it.test.SendMailTest
-
- setup - 0 ms -
-
-
-
by.academy.it.test.LoginTest
-
- loginToMailTest - 9397 ms -
-
- negativeLoginToMailTest - 21942 ms -
-
-
-
by.academy.it.test.SendMailTest
-
- beforeTest - 26113 ms -
-
- sendMailTest - 30703 ms -
-
- sendMainNoSubjectNoBodyTest - 36727 ms -
-
- sendMailNoAddressTest - 41041 ms -
-
- DraftMailTest - 41992 ms -
-
- afterTest - 46561 ms -
-
- tearDown - 48850 ms -
-
-
-
-
- - diff --git a/test-output/jquery-1.7.1.min.js b/test-output/jquery-1.7.1.min.js deleted file mode 100644 index 198b3ff..0000000 --- a/test-output/jquery-1.7.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml b/test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml deleted file mode 100644 index e27fb03..0000000 --- a/test-output/junitreports/TEST-Itacademy.Test.LoginTest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/test-output/junitreports/TEST-Itacademy.Test.MyTest.xml b/test-output/junitreports/TEST-Itacademy.Test.MyTest.xml deleted file mode 100644 index 3b39b19..0000000 --- a/test-output/junitreports/TEST-Itacademy.Test.MyTest.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml b/test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml deleted file mode 100644 index 675af67..0000000 --- a/test-output/junitreports/TEST-Itacademy.Test.SendMailTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml b/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml deleted file mode 100644 index fd88956..0000000 --- a/test-output/junitreports/TEST-by.academy.it.test.LoginTest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml b/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml deleted file mode 100644 index fd7a90e..0000000 --- a/test-output/junitreports/TEST-by.academy.it.test.SendMailTest.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/test-output/navigator-bullet.png b/test-output/navigator-bullet.png deleted file mode 100644 index 36d90d395c51912e718b89dd88b4a3fb53aa1d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class nameMethod nameGroups
by.academy.it.test.LoginTest  
@Test
 negativeLoginToMailTest 
 loginToMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
by.academy.it.test.SendMailTest  
@Test
 sendMailNoAddressTest 
 sendMainNoSubjectNoBodyTest 
 DraftMailTest 
 sendMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html deleted file mode 100644 index 199cb3f..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/groups.html +++ /dev/null @@ -1 +0,0 @@ -

Groups used for this test run

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/index.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/index.html deleted file mode 100644 index e618d44..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Results for My Selenium Test Suite for mail.ru cloud - - - - - diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/main.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/main.html deleted file mode 100644 index 206c1a7..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/main.html +++ /dev/null @@ -1,2 +0,0 @@ -Results for My Selenium Test Suite for mail.ru cloud -Select a result on the left-hand pane. diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html deleted file mode 100644 index 2a6fc8e..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-alphabetical.html +++ /dev/null @@ -1,24 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru cloud

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:29:41 0      DraftMailTestmain@750044075
20/02/05 00:29:46 4569  <<afterTest     main@750044075
20/02/05 00:29:25 -15878  >>beforeTest     main@750044075
20/02/05 00:29:09 -32595      loginToMailTestmain@750044075
20/02/05 00:29:21 -20050      negativeLoginToMailTestmain@750044075
20/02/05 00:29:40 -951      sendMailNoAddressTestmain@750044075
20/02/05 00:29:30 -11289      sendMailTestmain@750044075
20/02/05 00:29:36 -5265      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:28:59 -41992 >>setup      main@750044075
20/02/05 00:29:48 6858 <<tearDown      main@750044075
diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html deleted file mode 100644 index 54b14cb..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods-not-run.html +++ /dev/null @@ -1,2 +0,0 @@ -

Methods that were not run

-
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html deleted file mode 100644 index 8fa0cc0..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/methods.html +++ /dev/null @@ -1,24 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru cloud

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:28:59 0 >>setup      main@750044075
20/02/05 00:29:09 9397      loginToMailTestmain@750044075
20/02/05 00:29:21 21942      negativeLoginToMailTestmain@750044075
20/02/05 00:29:25 26114  >>beforeTest     main@750044075
20/02/05 00:29:30 30703      sendMailTestmain@750044075
20/02/05 00:29:36 36727      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:29:40 41041      sendMailNoAddressTestmain@750044075
20/02/05 00:29:41 41992      DraftMailTestmain@750044075
20/02/05 00:29:46 46561  <<afterTest     main@750044075
20/02/05 00:29:48 48850 <<tearDown      main@750044075
diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html deleted file mode 100644 index 063bc2e..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/reporter-output.html +++ /dev/null @@ -1 +0,0 @@ -

Reporter output

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html deleted file mode 100644 index cefbf8c..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/testng.xml.html +++ /dev/null @@ -1 +0,0 @@ -testng.xml for My Selenium Test Suite for mail.ru cloud<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru cloud">
  <test thread-count="1" verbose="2" name="TestLogin">
    <classes>
      <class name="by.academy.it.test.LoginTest"/>
    </classes>
  </test> <!-- TestLogin -->
  <test thread-count="1" verbose="2" name="TestEmails">
    <classes>
      <class name="by.academy.it.test.SendMailTest"/>
    </classes>
  </test> <!-- TestEmails -->
</suite> <!-- My Selenium Test Suite for mail.ru cloud -->
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html b/test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html deleted file mode 100644 index 518717b..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru cloud/toc.html +++ /dev/null @@ -1,38 +0,0 @@ - - -Results for My Selenium Test Suite for mail.ru cloud - - - - -

Results for
My Selenium Test Suite for mail.ru cloud

- - - - - - - - - - -
2 tests2 classes6 methods:
-  chronological
-  alphabetical
-  not run (0)
0 groupreporter outputtestng.xml
- -

-

-
TestEmails (4/0/0) - Results -
-
- - -

-

-
TestLogin (2/0/0) - Results -
-
- \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties b/test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties deleted file mode 100644 index d35c6cd..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/TestEmails.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties b/test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties deleted file mode 100644 index d35c6cd..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/TestLogin.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/classes.html b/test-output/old/My Selenium Test Suite for mail.ru mail/classes.html deleted file mode 100644 index 7e118a9..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/classes.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class nameMethod nameGroups
by.academy.it.test.LoginTest  
@Test
 negativeLoginToMailTest 
 loginToMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
by.academy.it.test.SendMailTest  
@Test
 sendMailNoAddressTest 
 sendMainNoSubjectNoBodyTest 
 DraftMailTest 
 sendMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/groups.html b/test-output/old/My Selenium Test Suite for mail.ru mail/groups.html deleted file mode 100644 index 199cb3f..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/groups.html +++ /dev/null @@ -1 +0,0 @@ -

Groups used for this test run

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/index.html b/test-output/old/My Selenium Test Suite for mail.ru mail/index.html deleted file mode 100644 index 0d815be..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Results for My Selenium Test Suite for mail.ru mail - - - - - diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/main.html b/test-output/old/My Selenium Test Suite for mail.ru mail/main.html deleted file mode 100644 index 0874584..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/main.html +++ /dev/null @@ -1,2 +0,0 @@ -Results for My Selenium Test Suite for mail.ru mail -Select a result on the left-hand pane. diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html deleted file mode 100644 index 597fa26..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-alphabetical.html +++ /dev/null @@ -1,24 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru mail

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:28:52 0      DraftMailTestmain@750044075
20/02/05 00:28:56 4780  <<afterTest     main@750044075
20/02/05 00:28:34 -17372  >>beforeTest     main@750044075
20/02/05 00:28:18 -34064      loginToMailTestmain@750044075
20/02/05 00:28:30 -21672      negativeLoginToMailTestmain@750044075
20/02/05 00:28:51 -915      sendMailNoAddressTestmain@750044075
20/02/05 00:28:39 -12854      sendMailTestmain@750044075
20/02/05 00:28:46 -5614      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:28:07 -45183 >>setup      main@750044075
20/02/05 00:28:58 6670 <<tearDown      main@750044075
diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html deleted file mode 100644 index 54b14cb..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/methods-not-run.html +++ /dev/null @@ -1,2 +0,0 @@ -

Methods that were not run

-
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html b/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html deleted file mode 100644 index aeafdf3..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/methods.html +++ /dev/null @@ -1,24 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite for mail.ru mail

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/05 00:28:07 0 >>setup      main@750044075
20/02/05 00:28:18 11119      loginToMailTestmain@750044075
20/02/05 00:28:30 23511      negativeLoginToMailTestmain@750044075
20/02/05 00:28:34 27811  >>beforeTest     main@750044075
20/02/05 00:28:39 32329      sendMailTestmain@750044075
20/02/05 00:28:46 39569      sendMainNoSubjectNoBodyTestmain@750044075
20/02/05 00:28:51 44268      sendMailNoAddressTestmain@750044075
20/02/05 00:28:52 45183      DraftMailTestmain@750044075
20/02/05 00:28:56 49963  <<afterTest     main@750044075
20/02/05 00:28:58 51853 <<tearDown      main@750044075
diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html b/test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html deleted file mode 100644 index 063bc2e..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/reporter-output.html +++ /dev/null @@ -1 +0,0 @@ -

Reporter output

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html b/test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html deleted file mode 100644 index bb3fb24..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/testng.xml.html +++ /dev/null @@ -1 +0,0 @@ -testng.xml for My Selenium Test Suite for mail.ru mail<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite for mail.ru mail">
  <test thread-count="1" verbose="2" name="TestLogin">
    <classes>
      <class name="by.academy.it.test.LoginTest"/>
    </classes>
  </test> <!-- TestLogin -->
  <test thread-count="1" verbose="2" name="TestEmails">
    <classes>
      <class name="by.academy.it.test.SendMailTest"/>
    </classes>
  </test> <!-- TestEmails -->
</suite> <!-- My Selenium Test Suite for mail.ru mail -->
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite for mail.ru mail/toc.html b/test-output/old/My Selenium Test Suite for mail.ru mail/toc.html deleted file mode 100644 index a32ea8c..0000000 --- a/test-output/old/My Selenium Test Suite for mail.ru mail/toc.html +++ /dev/null @@ -1,38 +0,0 @@ - - -Results for My Selenium Test Suite for mail.ru mail - - - - -

Results for
My Selenium Test Suite for mail.ru mail

- - - - - - - - - - -
2 tests2 classes6 methods:
-  chronological
-  alphabetical
-  not run (0)
0 groupreporter outputtestng.xml
- -

-

-
TestEmails (4/0/0) - Results -
-
- - -

-

-
TestLogin (2/0/0) - Results -
-
- \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/TestEmails.properties b/test-output/old/My Selenium Test Suite/TestEmails.properties deleted file mode 100644 index d35c6cd..0000000 --- a/test-output/old/My Selenium Test Suite/TestEmails.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/TestLogin.properties b/test-output/old/My Selenium Test Suite/TestLogin.properties deleted file mode 100644 index d35c6cd..0000000 --- a/test-output/old/My Selenium Test Suite/TestLogin.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=TestLogin][SuiteResult context=TestEmails] \ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/classes.html b/test-output/old/My Selenium Test Suite/classes.html deleted file mode 100644 index 7e118a9..0000000 --- a/test-output/old/My Selenium Test Suite/classes.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class nameMethod nameGroups
by.academy.it.test.LoginTest  
@Test
 negativeLoginToMailTest 
 loginToMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
by.academy.it.test.SendMailTest  
@Test
 sendMailNoAddressTest 
 sendMainNoSubjectNoBodyTest 
 DraftMailTest 
 sendMailTest 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
diff --git a/test-output/old/My Selenium Test Suite/groups.html b/test-output/old/My Selenium Test Suite/groups.html deleted file mode 100644 index 199cb3f..0000000 --- a/test-output/old/My Selenium Test Suite/groups.html +++ /dev/null @@ -1 +0,0 @@ -

Groups used for this test run

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/index.html b/test-output/old/My Selenium Test Suite/index.html deleted file mode 100644 index 314a085..0000000 --- a/test-output/old/My Selenium Test Suite/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Results for My Selenium Test Suite - - - - - diff --git a/test-output/old/My Selenium Test Suite/main.html b/test-output/old/My Selenium Test Suite/main.html deleted file mode 100644 index 7bd5c24..0000000 --- a/test-output/old/My Selenium Test Suite/main.html +++ /dev/null @@ -1,2 +0,0 @@ -Results for My Selenium Test Suite -Select a result on the left-hand pane. diff --git a/test-output/old/My Selenium Test Suite/methods-alphabetical.html b/test-output/old/My Selenium Test Suite/methods-alphabetical.html deleted file mode 100644 index e7a8889..0000000 --- a/test-output/old/My Selenium Test Suite/methods-alphabetical.html +++ /dev/null @@ -1,24 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/04 23:23:06 0      DraftMailTestmain@1018937824
20/02/04 23:23:11 4456  <<afterTest     main@1018937824
20/02/04 23:22:49 -17513  >>beforeTest     main@1018937824
20/02/04 23:22:26 -40235      loginToMailTestmain@1018937824
20/02/04 23:22:45 -21201      negativeLoginToMailTestmain@1018937824
20/02/04 23:23:05 -871      sendMailNoAddressTestmain@1018937824
20/02/04 23:22:53 -12880      sendMailTestmain@1018937824
20/02/04 23:23:01 -5716      sendMainNoSubjectNoBodyTestmain@1018937824
20/02/04 23:22:15 -50819 >>setup      main@1018937824
20/02/04 23:23:14 7713 <<tearDown      main@1018937824
diff --git a/test-output/old/My Selenium Test Suite/methods-not-run.html b/test-output/old/My Selenium Test Suite/methods-not-run.html deleted file mode 100644 index 54b14cb..0000000 --- a/test-output/old/My Selenium Test Suite/methods-not-run.html +++ /dev/null @@ -1,2 +0,0 @@ -

Methods that were not run

-
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/methods.html b/test-output/old/My Selenium Test Suite/methods.html deleted file mode 100644 index 19d7a35..0000000 --- a/test-output/old/My Selenium Test Suite/methods.html +++ /dev/null @@ -1,24 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


My Selenium Test Suite

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/02/04 23:22:15 0 >>setup      main@1018937824
20/02/04 23:22:26 10584      loginToMailTestmain@1018937824
20/02/04 23:22:45 29618      negativeLoginToMailTestmain@1018937824
20/02/04 23:22:49 33306  >>beforeTest     main@1018937824
20/02/04 23:22:53 37939      sendMailTestmain@1018937824
20/02/04 23:23:01 45103      sendMainNoSubjectNoBodyTestmain@1018937824
20/02/04 23:23:05 49948      sendMailNoAddressTestmain@1018937824
20/02/04 23:23:06 50819      DraftMailTestmain@1018937824
20/02/04 23:23:11 55275  <<afterTest     main@1018937824
20/02/04 23:23:14 58532 <<tearDown      main@1018937824
diff --git a/test-output/old/My Selenium Test Suite/reporter-output.html b/test-output/old/My Selenium Test Suite/reporter-output.html deleted file mode 100644 index 063bc2e..0000000 --- a/test-output/old/My Selenium Test Suite/reporter-output.html +++ /dev/null @@ -1 +0,0 @@ -

Reporter output

\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/testng.xml.html b/test-output/old/My Selenium Test Suite/testng.xml.html deleted file mode 100644 index 849d34c..0000000 --- a/test-output/old/My Selenium Test Suite/testng.xml.html +++ /dev/null @@ -1 +0,0 @@ -testng.xml for My Selenium Test Suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="1" guice-stage="DEVELOPMENT" verbose="2" name="My Selenium Test Suite">
  <test thread-count="1" verbose="2" name="TestLogin">
    <classes>
      <class name="by.academy.it.test.LoginTest"/>
    </classes>
  </test> <!-- TestLogin -->
  <test thread-count="1" verbose="2" name="TestEmails">
    <classes>
      <class name="by.academy.it.test.SendMailTest"/>
    </classes>
  </test> <!-- TestEmails -->
</suite> <!-- My Selenium Test Suite -->
\ No newline at end of file diff --git a/test-output/old/My Selenium Test Suite/toc.html b/test-output/old/My Selenium Test Suite/toc.html deleted file mode 100644 index 1bedf3b..0000000 --- a/test-output/old/My Selenium Test Suite/toc.html +++ /dev/null @@ -1,38 +0,0 @@ - - -Results for My Selenium Test Suite - - - - -

Results for
My Selenium Test Suite

- - - - - - - - - - -
2 tests2 classes6 methods:
-  chronological
-  alphabetical
-  not run (0)
0 groupreporter outputtestng.xml
- -

-

-
TestEmails (4/0/0) - Results -
-
- - -

-

-
TestLogin (2/0/0) - Results -
-
- \ No newline at end of file diff --git a/test-output/old/index.html b/test-output/old/index.html deleted file mode 100644 index d42b624..0000000 --- a/test-output/old/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -

Test results

- - - - -
SuitePassedFailedSkippedtestng.xml
Total1200 
My Selenium Test Suite for mail.ru mail600Link
My Selenium Test Suite for mail.ru cloud600Link
diff --git a/test-output/passed.png b/test-output/passed.png deleted file mode 100644 index 45e85bbfd0f5e85def14b896cfd4331675be2759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 diff --git a/test-output/testng-failed.xml b/test-output/testng-failed.xml deleted file mode 100644 index a6609fa..0000000 --- a/test-output/testng-failed.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/test-output/testng-reports.css b/test-output/testng-reports.css deleted file mode 100644 index b49abf3..0000000 --- a/test-output/testng-reports.css +++ /dev/null @@ -1,309 +0,0 @@ -body { - margin: 0 0 5px 5px; -} - -ul { - margin: 0; -} - -li { - list-style-type: none; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.navigator-selected { - background: #ffa500; -} - -.wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - overflow: auto; -} - -.navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto; -} - -.suite { - margin: 0 10px 10px 0; - background-color: #fff8dc; -} - -.suite-name { - padding-left: 10px; - font-size: 25px; - font-family: Times, sans-serif; -} - -.main-panel-header { - padding: 5px; - background-color: #9FB4D9; /*afeeee*/; - font-family: monospace; - font-size: 18px; -} - -.main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #DEE8FC; /*d0ffff*/; -} - -.rounded-window { - border-radius: 10px; - border-style: solid; - border-width: 1px; -} - -.rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto; -} - -.light-rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; -} - -.rounded-window-bottom { - border-style: solid; - border-width: 0 1px 1px 1px; - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto; -} - -.method-name { - font-size: 12px; - font-family: monospace; -} - -.method-content { - border-style: solid; - border-width: 0 0 1px 0; - margin-bottom: 10px; - padding-bottom: 5px; - width: 80%; -} - -.parameters { - font-size: 14px; - font-family: monospace; -} - -.stack-trace { - white-space: pre; - font-family: monospace; - font-size: 12px; - font-weight: bold; - margin-top: 0; - margin-left: 20px; -} - -.testng-xml { - font-family: monospace; -} - -.method-list-content { - margin-left: 10px; -} - -.navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; -} - -.suite-section-title { - margin-top: 10px; - width: 80%; - border-style: solid; - border-width: 1px 0 0 0; - font-family: Times, sans-serif; - font-size: 18px; - font-weight: bold; -} - -.suite-section-content { - list-style-image: url(bullet_point.png); -} - -.top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0 0 5px 0; - background-color: #0066ff; - font-family: Times, sans-serif; - color: #fff; - text-align: center; -} - -.top-banner-title-font { - font-size: 25px; -} - -.test-name { - font-family: 'Lucida Grande', sans-serif; - font-size: 16px; -} - -.suite-icon { - padding: 5px; - float: right; - height: 20px; -} - -.test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0 0 1px 0; - border-style: solid; - padding: 5px; -} - -.test-group-name { - font-weight: bold; -} - -.method-in-group { - font-size: 16px; - margin-left: 80px; -} - -table.google-visualization-table-table { - width: 100%; -} - -.reporter-method-name { - font-size: 14px; - font-family: monospace; -} - -.reporter-method-output-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.ignored-class-div { - font-size: 14px; - font-family: monospace; -} - -.ignored-methods-div { - padding: 5px; - margin: 0 0 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0 0 0 1px; - border-style: solid; -} - -.border-failed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #f00; -} - -.border-skipped { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #edc600; -} - -.border-passed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0 0 0 10px; - border-color: #19f52d; -} - -.times-div { - text-align: center; - padding: 5px; -} - -.suite-total-time { - font: 16px 'Lucida Grande'; -} - -.configuration-suite { - margin-left: 20px; -} - -.configuration-test { - margin-left: 40px; -} - -.configuration-class { - margin-left: 60px; -} - -.configuration-method { - margin-left: 80px; -} - -.test-method { - margin-left: 100px; -} - -.chronological-class { - background-color: skyblue; - border-style: solid; - border-width: 0 0 1px 1px; -} - -.method-start { - float: right; -} - -.chronological-class-name { - padding: 0 0 0 5px; - color: #008; -} - -.after, .before, .test-method { - font-family: monospace; - font-size: 14px; -} - -.navigator-suite-header { - font-size: 22px; - margin: 0 10px 5px 0; - background-color: #deb887; - text-align: center; -} - -.collapse-all-icon { - padding: 5px; - float: right; -} diff --git a/test-output/testng-reports.js b/test-output/testng-reports.js deleted file mode 100644 index 5159f81..0000000 --- a/test-output/testng-reports.js +++ /dev/null @@ -1,122 +0,0 @@ -$(document).ready(function() { - $('a.navigator-link').click(function() { - // Extract the panel for this link - var panel = getPanelName($(this)); - - // Mark this link as currently selected - $('.navigator-link').parent().removeClass('navigator-selected'); - $(this).parent().addClass('navigator-selected'); - - showPanel(panel); - }); - - installMethodHandlers('failed'); - installMethodHandlers('skipped'); - installMethodHandlers('passed', true); // hide passed methods by default - - $('a.method').click(function() { - showMethod($(this)); - return false; - }); - - // Hide all the panels and display the first one (do this last - // to make sure the click() will invoke the listeners) - $('.panel').hide(); - $('.navigator-link').first().click(); - - // Collapse/expand the suites - $('a.collapse-all-link').click(function() { - var contents = $('.navigator-suite-content'); - if (contents.css('display') == 'none') { - contents.show(); - } else { - contents.hide(); - } - }); -}); - -// The handlers that take care of showing/hiding the methods -function installMethodHandlers(name, hide) { - function getContent(t) { - return $('.method-list-content.' + name + "." + t.attr('panel-name')); - } - - function getHideLink(t, name) { - var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); - return $(s); - } - - function getShowLink(t, name) { - return $('a.show-methods.' + name + "." + t.attr('panel-name')); - } - - function getMethodPanelClassSel(element, name) { - var panelName = getPanelName(element); - var sel = '.' + panelName + "-class-" + name; - return $(sel); - } - - $('a.hide-methods.' + name).click(function() { - var w = getContent($(this)); - w.hide(); - getHideLink($(this), name).hide(); - getShowLink($(this), name).show(); - getMethodPanelClassSel($(this), name).hide(); - }); - - $('a.show-methods.' + name).click(function() { - var w = getContent($(this)); - w.show(); - getHideLink($(this), name).show(); - getShowLink($(this), name).hide(); - showPanel(getPanelName($(this))); - getMethodPanelClassSel($(this), name).show(); - }); - - if (hide) { - $('a.hide-methods.' + name).click(); - } else { - $('a.show-methods.' + name).click(); - } -} - -function getHashForMethod(element) { - return element.attr('hash-for-method'); -} - -function getPanelName(element) { - return element.attr('panel-name'); -} - -function showPanel(panelName) { - $('.panel').hide(); - var panel = $('.panel[panel-name="' + panelName + '"]'); - panel.show(); -} - -function showMethod(element) { - var hashTag = getHashForMethod(element); - var panelName = getPanelName(element); - showPanel(panelName); - var current = document.location.href; - var base = current.substring(0, current.indexOf('#')) - document.location.href = base + '#' + hashTag; - var newPosition = $(document).scrollTop() - 65; - $(document).scrollTop(newPosition); -} - -function drawTable() { - for (var i = 0; i < suiteTableInitFunctions.length; i++) { - window[suiteTableInitFunctions[i]](); - } - - for (var k in window.suiteTableData) { - var v = window.suiteTableData[k]; - var div = v.tableDiv; - var data = v.tableData - var table = new google.visualization.Table(document.getElementById(div)); - table.draw(data, { - showRowNumber : false - }); - } -} diff --git a/test-output/testng-results.xml b/test-output/testng-results.xml deleted file mode 100644 index 0374901..0000000 --- a/test-output/testng-results.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test-output/testng.css b/test-output/testng.css deleted file mode 100644 index 5124ba8..0000000 --- a/test-output/testng.css +++ /dev/null @@ -1,9 +0,0 @@ -.invocation-failed, .test-failed { background-color: #DD0000; } -.invocation-percent, .test-percent { background-color: #006600; } -.invocation-passed, .test-passed { background-color: #00AA00; } -.invocation-skipped, .test-skipped { background-color: #CCCC00; } - -.main-page { - font-size: x-large; -} - From ee17fe9ab5773cce2aa76d784dfbba0c0130e44a Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Wed, 5 Feb 2020 00:56:15 +0300 Subject: [PATCH 04/13] Refactoring4 --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d5557dd..95fdb42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ /target/ - +/test-output/ # Eclipse STS artifacts **/.settings/** From eac3b45147818f25ad9905eacb9737425396d33c Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Wed, 5 Feb 2020 22:36:55 +0300 Subject: [PATCH 05/13] Business models --- src/main/java/by/academy/it/model/Letter.java | 31 +++++++++++++++++++ src/main/java/by/academy/it/model/User.java | 23 ++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/main/java/by/academy/it/model/Letter.java create mode 100644 src/main/java/by/academy/it/model/User.java diff --git a/src/main/java/by/academy/it/model/Letter.java b/src/main/java/by/academy/it/model/Letter.java new file mode 100644 index 0000000..2b5d1df --- /dev/null +++ b/src/main/java/by/academy/it/model/Letter.java @@ -0,0 +1,31 @@ +package by.academy.it.model; + +public class Letter { + private String address; + private String topic; + private String message; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getTopic() { + return topic; + } + + public void setTopic(String topic) { + this.topic = topic; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/src/main/java/by/academy/it/model/User.java b/src/main/java/by/academy/it/model/User.java new file mode 100644 index 0000000..2c95573 --- /dev/null +++ b/src/main/java/by/academy/it/model/User.java @@ -0,0 +1,23 @@ +package by.academy.it.model; + +public class User { + + private String login; + private String password; + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} From 5aa2f5e3894ffcf99014ad71b613128a3f4d8dbe Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Wed, 5 Feb 2020 22:59:57 +0300 Subject: [PATCH 06/13] Business models usage --- .../java/by/academy/it/page/LoginPage.java | 8 ++++++ .../java/by/academy/it/page/MailPage.java | 18 ++++++++++++ .../java/by/academy/it/test/LoginTest.java | 7 ++++- .../java/by/academy/it/test/SendMailTest.java | 28 +++++++++++++++---- 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/main/java/by/academy/it/page/LoginPage.java b/src/main/java/by/academy/it/page/LoginPage.java index 96b9565..ab8219b 100644 --- a/src/main/java/by/academy/it/page/LoginPage.java +++ b/src/main/java/by/academy/it/page/LoginPage.java @@ -1,5 +1,6 @@ package by.academy.it.page; +import by.academy.it.model.User; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -27,6 +28,13 @@ public void doLogin(String login, String password) { enterPassword(password); waitVisible(LOGGED_USER_MAIL); } + public void doLogin(User user) { + //вызвали метод для ввода логина + enterLogin(user.getLogin()); + //вводим пароль + enterPassword(user.getPassword()); + waitVisible(LOGGED_USER_MAIL); + } public void enterPassword(String password) { //вводим пароль diff --git a/src/main/java/by/academy/it/page/MailPage.java b/src/main/java/by/academy/it/page/MailPage.java index 9d41f8d..a46eaca 100644 --- a/src/main/java/by/academy/it/page/MailPage.java +++ b/src/main/java/by/academy/it/page/MailPage.java @@ -1,5 +1,6 @@ package by.academy.it.page; +import by.academy.it.model.Letter; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -54,7 +55,24 @@ public void sendNewMail(String addres, String topic, String text) { closeSentEmailDialog(); } + public void sendNewMail(Letter letter) { + newMail(); + fillAddres(letter.getAddress()); + fillTopic(letter.getTopic()); + fillMailText(letter.getMessage()); + sendMail(); + if (letter.getAddress().trim().isEmpty()) { + return; + } + if (letter.getMessage().trim().isEmpty()) { + // подтверждаем отправку пустого письма + WebElement sendEmtyButton = waitVisible(SEND_EMPTY_BOOTON); + sendEmtyButton.click(); + } + + closeSentEmailDialog(); + } // создает и сохраняет черновик письма public void createDraftMail(String addres, String topic, String text) { newMail(); diff --git a/src/main/java/by/academy/it/test/LoginTest.java b/src/main/java/by/academy/it/test/LoginTest.java index 0474513..b60122e 100644 --- a/src/main/java/by/academy/it/test/LoginTest.java +++ b/src/main/java/by/academy/it/test/LoginTest.java @@ -1,5 +1,6 @@ package by.academy.it.test; +import by.academy.it.model.User; import by.academy.it.page.LoginPage; import org.testng.Assert; import org.testng.annotations.Test; @@ -10,7 +11,11 @@ public class LoginTest extends BaseTest { public void loginToMailTest() { getDriver().get(LOGIN_URL); LoginPage loginPage = new LoginPage(getDriver()); - loginPage.doLogin(LOGIN, PASSWORD); + User user = new User(); + user.setLogin(LOGIN); + user.setPassword(PASSWORD); + + loginPage.doLogin(user); Assert.assertEquals(loginPage.getLoggedUserMail(), LOGIN, "Testing of logging with valid data is failed"); loginPage.doLogout(); diff --git a/src/main/java/by/academy/it/test/SendMailTest.java b/src/main/java/by/academy/it/test/SendMailTest.java index ebb0cc3..29bbee9 100644 --- a/src/main/java/by/academy/it/test/SendMailTest.java +++ b/src/main/java/by/academy/it/test/SendMailTest.java @@ -1,6 +1,8 @@ package by.academy.it.test; +import by.academy.it.model.Letter; +import by.academy.it.model.User; import by.academy.it.page.LoginPage; import by.academy.it.page.MailPage; import org.testng.Assert; @@ -23,7 +25,11 @@ public void beforeTest() { getDriver().get(LOGIN_URL); loginPage = new LoginPage(getDriver()); mailPage = new MailPage(getDriver()); - loginPage.doLogin(LOGIN, PASSWORD); + User user = new User(); + user.setLogin(LOGIN); + user.setPassword(PASSWORD); + + loginPage.doLogin(user); } @AfterTest @@ -34,9 +40,13 @@ public void afterTest() { } @Test(priority = 3) - //отправка письма + //отправка письма на свой же адрес (сама себе) public void sendMailTest() { - mailPage.sendNewMail(LOGIN, TOPIC, TEXT); + Letter letter = new Letter(); + letter.setAddress(LOGIN); + letter.setTopic(TOPIC); + letter.setMessage(TEXT); + mailPage.sendNewMail(letter); //переходим в папку отправленные mailPage.goToSentEmails(); //проверям есть ли письмо с указанным адресом в текущей папке @@ -52,7 +62,11 @@ public void sendMailTest() { @Test(priority = 4) public void sendMainNoSubjectNoBodyTest() { - mailPage.sendNewMail(LOGIN, EMPTY, EMPTY); + Letter letter = new Letter(); + letter.setAddress(LOGIN); + letter.setTopic(EMPTY); + letter.setMessage(EMPTY); + mailPage.sendNewMail(letter); // заходим в папку отправленные mailPage.goToSentEmails(); //проверям есть ли письмо с указанным адресом в текущей папке(Отправленные) @@ -69,7 +83,11 @@ public void sendMainNoSubjectNoBodyTest() { @Test(priority = 5) public void sendMailNoAddressTest() { //отправляем письмо без указания адреса - mailPage.sendNewMail(EMPTY, TOPIC, TEXT); + Letter letter = new Letter(); + letter.setAddress(EMPTY); + letter.setTopic(TOPIC); + letter.setMessage(TEXT); + mailPage.sendNewMail(letter); //проверяем что появилось сообщение об ошибке(Не указан адрес получателя) Assert.assertEquals(mailPage.getNoAddressErrorMessage(), "Не указан адрес получателя"); mailPage.closeNewEmailDialog(); From ba616e73144e223b492109fdb673626aef84a69d Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Fri, 7 Feb 2020 00:09:32 +0300 Subject: [PATCH 07/13] Create and Remove folder --- .../java/by/academy/it/page/CloudPage.java | 50 +++++++++++++++++++ .../java/by/academy/it/page/LoginPage.java | 10 ++-- .../java/by/academy/it/test/BaseTest.java | 1 + .../java/by/academy/it/test/CloudTest.java | 46 +++++++++++++++++ .../java/by/academy/it/test/SendMailTest.java | 4 +- 5 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 src/main/java/by/academy/it/page/CloudPage.java create mode 100644 src/main/java/by/academy/it/test/CloudTest.java diff --git a/src/main/java/by/academy/it/page/CloudPage.java b/src/main/java/by/academy/it/page/CloudPage.java new file mode 100644 index 0000000..7737fc1 --- /dev/null +++ b/src/main/java/by/academy/it/page/CloudPage.java @@ -0,0 +1,50 @@ +package by.academy.it.page; + +import by.academy.it.model.User; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +public class CloudPage extends BasePage { + + public CloudPage(WebDriver driver) { + super(driver); + } + + public void doLogin(User user){ + waitVisible("//a[contains(text(),'Войдите')]").click(); + LoginPage loginPage = new LoginPage(getDriver()); + loginPage.doLogin(user); + } + //создаем папку в облаке + public void createNewFolder(String name){ + waitVisible("//div[text()='Создать']").click(); + waitVisible("//div[text()='Папку']").click(); + waitVisible("//input[@placeholder='Введите имя папки']").sendKeys(name); + waitVisible("//button[text()='Создать']").click(); + } + //проверяем, что папка создана + public boolean isFolderExist(String folderName) { + boolean result = false; + try { + //генерим динамический xPath для переданного в параметре метода имени папки + String xpathString = "//*[@data-id='/" + folderName + "']/parent::a"; + waitVisible(xpathString); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + return result; + } + + public void removeFolder(String name){ + String xpathString = "//*[@data-id='/" + name + "']/parent::a"; + waitVisible(xpathString).click(); + waitVisible("//div[text()='Удалить']").click(); + waitVisible("//button[@data-name='remove']").click(); + waitVisible("//span[text()='Удалено: 1 папка']"); + //закрываем диалог + waitVisible("//div[@class='layer_trashbin-tutorial']//button[@data-name='close']").click(); + + } +} diff --git a/src/main/java/by/academy/it/page/LoginPage.java b/src/main/java/by/academy/it/page/LoginPage.java index ab8219b..d5122d6 100644 --- a/src/main/java/by/academy/it/page/LoginPage.java +++ b/src/main/java/by/academy/it/page/LoginPage.java @@ -7,14 +7,14 @@ public class LoginPage extends BasePage { - private static final String LOGIN_INPUT_LOCATOR = "//*[contains(@name, 'Login')] "; + private static final String LOGIN_INPUT_LOCATOR = "//*[contains(@name,'Login')]"; private static final String ENTER_PASSWORD_BUTTON = "//button "; - private static final String PASSWORD_FIELD = "//*[contains(@name, 'Password') ] "; - private static final String ENTER_BUTTON = "//*[contains(@type, 'submit') ] "; - private static final String LOGOUT_LINK = "//*[@id='PH_logoutLink'] "; + private static final String PASSWORD_FIELD = "//*[contains(@name,'Password')]"; + private static final String ENTER_BUTTON = "//*[contains(@type,'submit')]"; + private static final String LOGOUT_LINK = "//*[@id='PH_logoutLink']"; private static final String LOGIN_LINK = "//*[@id='PH_authLink']"; private static final String LOGGED_USER_MAIL = "//*[@id='PH_user-email']"; - private static final String LOGIN_ERROR_MESSAGE = "//*[@data-test-id='error-footer-text'] "; + private static final String LOGIN_ERROR_MESSAGE = "//*[@data-test-id='error-footer-text']"; public LoginPage(WebDriver driver) { super(driver); diff --git a/src/main/java/by/academy/it/test/BaseTest.java b/src/main/java/by/academy/it/test/BaseTest.java index 18cff2c..35c0431 100644 --- a/src/main/java/by/academy/it/test/BaseTest.java +++ b/src/main/java/by/academy/it/test/BaseTest.java @@ -17,6 +17,7 @@ public class BaseTest { public static final String INVALID_PASSWORD = "&YPviFA1zpu1po"; public static final String LOGIN_URL = "https://account.mail.ru/login"; + public static final String CLOUD_URL = "https://cloud.mail.ru"; public static WebDriver driver = null; diff --git a/src/main/java/by/academy/it/test/CloudTest.java b/src/main/java/by/academy/it/test/CloudTest.java new file mode 100644 index 0000000..d3236af --- /dev/null +++ b/src/main/java/by/academy/it/test/CloudTest.java @@ -0,0 +1,46 @@ +package by.academy.it.test; + +import by.academy.it.model.User; +import by.academy.it.page.CloudPage; +import by.academy.it.page.LoginPage; +import org.testng.Assert; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +public class CloudTest extends BaseTest { + + private CloudPage cloudPage; + private LoginPage loginPage; + private String folderName = "new_folder"; + + @BeforeTest + public void beforeTest() { + + getDriver().get(LOGIN_URL); + + cloudPage = new CloudPage(getDriver()); + loginPage = new LoginPage(getDriver()); + + User user = new User(); + user.setLogin(LOGIN); + user.setPassword(PASSWORD); + + loginPage.doLogin(user); + getDriver().get(CLOUD_URL); + } + + @Test(priority = 1) + public void newFolderTest() { + + cloudPage.createNewFolder(folderName); + Assert.assertTrue(cloudPage.isFolderExist(folderName)); + + } + @Test(priority = 2,dependsOnMethods = {"newFolderTest"}) + public void removeFolderTest() { + cloudPage.removeFolder(folderName); + Assert.assertFalse(cloudPage.isFolderExist(folderName)); + + } + +} diff --git a/src/main/java/by/academy/it/test/SendMailTest.java b/src/main/java/by/academy/it/test/SendMailTest.java index 29bbee9..b22756a 100644 --- a/src/main/java/by/academy/it/test/SendMailTest.java +++ b/src/main/java/by/academy/it/test/SendMailTest.java @@ -21,7 +21,7 @@ public class SendMailTest extends BaseTest { @BeforeTest public void beforeTest() { - System.out.println("beforeClass"); + getDriver().get(LOGIN_URL); loginPage = new LoginPage(getDriver()); mailPage = new MailPage(getDriver()); @@ -34,7 +34,7 @@ public void beforeTest() { @AfterTest public void afterTest() { - System.out.println("afterClass"); + // выходим из почты loginPage.doLogout(); } From cb4e61f9aa34c68d4487c3f49dd71567c6570f6b Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Sun, 9 Feb 2020 17:37:14 +0300 Subject: [PATCH 08/13] WD Framework part two --- .../java/by/academy/it/page/BasePage.java | 17 +- .../java/by/academy/it/page/CloudPage.java | 160 ++++++++++++++++-- .../{CommonRunner.java => GlobalRunner.java} | 2 +- .../java/by/academy/it/test/BaseTest.java | 7 - .../java/by/academy/it/test/CloudTest.java | 40 +++-- src/main/resources/HelloWorld.txt | 1 + src/main/resources/cloud/suite.xml | 15 +- src/main/resources/mail/suite.xml | 6 - 8 files changed, 189 insertions(+), 59 deletions(-) rename src/main/java/by/academy/it/runner/{CommonRunner.java => GlobalRunner.java} (94%) create mode 100644 src/main/resources/HelloWorld.txt diff --git a/src/main/java/by/academy/it/page/BasePage.java b/src/main/java/by/academy/it/page/BasePage.java index bbe0b67..b50c8a0 100644 --- a/src/main/java/by/academy/it/page/BasePage.java +++ b/src/main/java/by/academy/it/page/BasePage.java @@ -1,9 +1,11 @@ package by.academy.it.page; import org.openqa.selenium.By; +import org.openqa.selenium.ElementClickInterceptedException; import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.Wait; @@ -17,8 +19,9 @@ public class BasePage { public BasePage(WebDriver driver) { this.driver = driver; wait = new WebDriverWait(driver, 10, 500) - .withMessage("Element was not found in X seconds") - .ignoring(StaleElementReferenceException.class); + .withMessage("Element was not found in X seconds"); + // .ignoring(StaleElementReferenceException.class); + // .ignoring(ElementClickInterceptedException.class); } public WebDriver getDriver() { @@ -45,5 +48,13 @@ public Boolean apply(WebDriver driver) { } }); } - + public void waitStaleness(String xpath){ + wait.until(ExpectedConditions.stalenessOf(driver.findElement(By.xpath(xpath)))); + } + //клик правой кнопкой мыши по элементу + public void doRightMouseClick (String xPath){ + Actions builder = new Actions(getDriver()); + WebElement element = driver.findElement(By.xpath(xPath)); + builder.contextClick(element).build().perform(); + } } diff --git a/src/main/java/by/academy/it/page/CloudPage.java b/src/main/java/by/academy/it/page/CloudPage.java index 7737fc1..004d6e9 100644 --- a/src/main/java/by/academy/it/page/CloudPage.java +++ b/src/main/java/by/academy/it/page/CloudPage.java @@ -1,33 +1,65 @@ package by.academy.it.page; -import by.academy.it.model.User; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; public class CloudPage extends BasePage { + private final String CREATE = "//div[text()='Создать']"; + private final String NEW_FOLDER = "//div[text()='Папку']"; + private final String FOLDER_NAME = "//input[@placeholder='Введите имя папки']"; + private final String CREATE_FOLDER_BUTTON = "//button[text()='Создать']"; + private final String NEW_FOLDER_BREADCRUMB_PREFIX = "// div[@id='breadcrumbs']//span[text()='"; + private final String NEW_FOLDER_BREADCRUMB_POSTFIX = "']"; + private final String FOLDER_PATH_PREFIX = "//*[@data-id='/"; + private final String FOLDER_PATH_POSTFIX = "']/parent::a"; + private final String DELETE_FOLDER = "//div[text()='Удалить']"; + private final String APPROVE_FOLDER_REMOVE = "//button[@data-name='remove']"; + private final String REMOVE_MESSAGE = "//span[text()='Удалено: 1 папка']"; + private final String CLOSE_DIALOG = "//div[@class='layer_trashbin-tutorial']//button[@data-name='close']"; + private final String UPLOAD = "//div[contains(@class,'Toolbar__root')]//div[@data-name='upload']"; + private final String FILE_PATH_INPUT = "//div[contains(@class,'layer_upload__controls__btn-wrapper')]//input[@type='file']"; + private final String UPLOAD_MESSAGE = "//span[contains(text(),'Загрузка завершена')]"; + private final String FILE_PATH_PREFIX = "//div[contains(@data-id,'"; + private final String FILE_PATH_POSTFIX = "') and @data-name='link']"; + private final String XPATH_PREFIX = "//div[contains(@data-id,'"; + private final String XPATH_POSTFIX = "') and @data-name='link']"; + private final String SELECT_FILE_CHECKBOX = "//div[@class='b-checkbox__box']"; + private final String MOVE_CONFIRM_BUTTON = "// div[@class='layer_move-confirm']//button[@data-name='move']"; + private final String FOLDER_NAME_PREFIX = "//div[@class='navmenu']//div[@data-id='/"; + private final String FOLDER_NAME_POSTFIX = "']"; + private final String ROOT_FOLDER = "//div[@class='navmenu']//a[@href='/home/']"; + private final String ROOT_FOLDER_BREADCRUMBS = "// div[@id='breadcrumbs']//span[text()='Облако']"; + private final String SHARE_PREFIX = "//div[contains(@data-id,'"; + private final String SHARE_POSTFIX = "') and @data-name='link']"; + private final String PUBLISH_BUTTON = "//button[@data-name='publish']"; + private final String COPY_LINK = "//input[@title='Скопировать']"; + private final String SHARED_FILE_PREFIX = "//div[text()='"; + private final String SHARED_FILE_POSTFIX = "']"; + private final String CLOSE_DIALOG_COMMERCIAL = "//div[contains(@class, 'Dialog__root_whiteCloseIcon')]/*[name()= 'svg']"; + private final String EMPTY_FOLDER_MESSAGE = "//div[text()='В этой папке нет содержимого']"; + public CloudPage(WebDriver driver) { super(driver); } - public void doLogin(User user){ - waitVisible("//a[contains(text(),'Войдите')]").click(); - LoginPage loginPage = new LoginPage(getDriver()); - loginPage.doLogin(user); - } //создаем папку в облаке - public void createNewFolder(String name){ - waitVisible("//div[text()='Создать']").click(); - waitVisible("//div[text()='Папку']").click(); - waitVisible("//input[@placeholder='Введите имя папки']").sendKeys(name); - waitVisible("//button[text()='Создать']").click(); + public void createNewFolder(String name) { + waitVisible(CREATE).click(); + waitVisible(NEW_FOLDER).click(); + waitVisible(FOLDER_NAME).sendKeys(name); + waitVisible(CREATE_FOLDER_BUTTON).click(); + waitVisible(NEW_FOLDER_BREADCRUMB_PREFIX + name + NEW_FOLDER_BREADCRUMB_POSTFIX); } + //проверяем, что папка создана public boolean isFolderExist(String folderName) { boolean result = false; try { //генерим динамический xPath для переданного в параметре метода имени папки - String xpathString = "//*[@data-id='/" + folderName + "']/parent::a"; + String xpathString = FOLDER_PATH_PREFIX + folderName + FOLDER_PATH_POSTFIX; waitVisible(xpathString); result = true; } catch (Exception e) { @@ -37,14 +69,106 @@ public boolean isFolderExist(String folderName) { return result; } - public void removeFolder(String name){ - String xpathString = "//*[@data-id='/" + name + "']/parent::a"; + //удаляем папку + public void removeFolder(String name) { + String xpathString = FOLDER_PATH_PREFIX + name + FOLDER_PATH_POSTFIX; waitVisible(xpathString).click(); - waitVisible("//div[text()='Удалить']").click(); - waitVisible("//button[@data-name='remove']").click(); - waitVisible("//span[text()='Удалено: 1 папка']"); + waitVisible(DELETE_FOLDER).click(); + waitVisible(APPROVE_FOLDER_REMOVE).click(); + waitVisible(REMOVE_MESSAGE); //закрываем диалог - waitVisible("//div[@class='layer_trashbin-tutorial']//button[@data-name='close']").click(); + waitVisible(CLOSE_DIALOG).click(); + } + + // загрузить файл + public void uploadFile(String filePath) { + waitVisible(UPLOAD).click(); + getDriver().findElement(By.xpath(FILE_PATH_INPUT)).sendKeys(filePath); + //ждем пока закончится загрузка(10с) + waitVisible(UPLOAD_MESSAGE); + } + + //проверяем, что файл загружен + public boolean isFileUploaded(String fileName) { + boolean result = false; + try { + //генерим динамический xPath для переданного в параметре метода имени папки + String xpathString = FILE_PATH_PREFIX + fileName + FILE_PATH_POSTFIX; + waitVisible(xpathString); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + return result; + } + + // перетягивание файла в папку + public void moveFileToFolder(String folderName, String fileName) { + WebElement file = waitVisible(XPATH_PREFIX + fileName + XPATH_POSTFIX); + WebElement folder = waitVisible(XPATH_PREFIX + folderName + XPATH_POSTFIX); + file.findElement(By.xpath(SELECT_FILE_CHECKBOX)).click(); + Actions builder = new Actions(getDriver()); + builder.clickAndHold(file) + .moveToElement(folder) + .moveByOffset(5, 5) + .release() + .build() + .perform(); + waitVisible(MOVE_CONFIRM_BUTTON).click(); + } + + // переходим в указанную папку + public void goToFolder(String nameFolder) { + waitStaleness(FOLDER_NAME_PREFIX + nameFolder + FOLDER_NAME_POSTFIX); + waitVisible(FOLDER_NAME_PREFIX + nameFolder + FOLDER_NAME_POSTFIX).click(); + waitVisible(NEW_FOLDER_BREADCRUMB_PREFIX + nameFolder + NEW_FOLDER_BREADCRUMB_POSTFIX); + } + + // переходим в корневую папку + public void goToRootFolder() { + waitVisible(ROOT_FOLDER).click(); + waitVisible(ROOT_FOLDER_BREADCRUMBS); + } + //возвращает URL на расшаренный файл + public String getShareLink(String fileName) { + WebElement file = waitVisible(SHARE_PREFIX + fileName + SHARE_POSTFIX); + file.findElement(By.xpath(SELECT_FILE_CHECKBOX)); + file.findElement(By.xpath(PUBLISH_BUTTON)).click(); + return waitVisible(COPY_LINK).getAttribute("value"); + } + + // проверяем есть ли ссылка на скачивание расшаренного файла + public boolean isSharedLinkExist(String fileName) { + boolean result = false; + try { + //генерим динамический xPath для переданного в параметре метода имени файла + String xpathString = SHARED_FILE_PREFIX + fileName + SHARED_FILE_POSTFIX; + waitVisible(xpathString); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + return result; + } + + //закрываем рекламный диалог + public void closeDialog() { + waitVisible(CLOSE_DIALOG_COMMERCIAL).click(); + } + + // + public boolean isFolderEmpty() { + boolean result = false; + try { + waitVisible(EMPTY_FOLDER_MESSAGE); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + return result; } } diff --git a/src/main/java/by/academy/it/runner/CommonRunner.java b/src/main/java/by/academy/it/runner/GlobalRunner.java similarity index 94% rename from src/main/java/by/academy/it/runner/CommonRunner.java rename to src/main/java/by/academy/it/runner/GlobalRunner.java index dd55ddd..a63de93 100644 --- a/src/main/java/by/academy/it/runner/CommonRunner.java +++ b/src/main/java/by/academy/it/runner/GlobalRunner.java @@ -8,7 +8,7 @@ /** * CommonRunner for all test siute files */ -public class CommonRunner { +public class GlobalRunner { public static void main(String[] args) { TestNG testng = new TestNG(); diff --git a/src/main/java/by/academy/it/test/BaseTest.java b/src/main/java/by/academy/it/test/BaseTest.java index 35c0431..3a1f840 100644 --- a/src/main/java/by/academy/it/test/BaseTest.java +++ b/src/main/java/by/academy/it/test/BaseTest.java @@ -16,12 +16,9 @@ public class BaseTest { public static final String INVALID_LOGIN = "kalachevaaaa.tamara@bk.ru"; public static final String INVALID_PASSWORD = "&YPviFA1zpu1po"; public static final String LOGIN_URL = "https://account.mail.ru/login"; - public static final String CLOUD_URL = "https://cloud.mail.ru"; - public static WebDriver driver = null; - public WebDriver getDriver() { return driver; } @@ -29,20 +26,16 @@ public WebDriver getDriver() { @BeforeSuite(alwaysRun = true)//открывает браузер перед выполнением сценария suite public void setup() { System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe"); - // from here: https://stackoverflow.com/questions/26772793/org-openqa-selenium-unhandledalertexception-unexpected-alert-open DesiredCapabilities dc = new DesiredCapabilities(); dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT); - driver = new ChromeDriver(dc); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); - } @AfterSuite public void tearDown() { getDriver().quit(); } - } diff --git a/src/main/java/by/academy/it/test/CloudTest.java b/src/main/java/by/academy/it/test/CloudTest.java index d3236af..e24b4bb 100644 --- a/src/main/java/by/academy/it/test/CloudTest.java +++ b/src/main/java/by/academy/it/test/CloudTest.java @@ -3,44 +3,62 @@ import by.academy.it.model.User; import by.academy.it.page.CloudPage; import by.academy.it.page.LoginPage; +import java.io.File; import org.testng.Assert; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class CloudTest extends BaseTest { - private CloudPage cloudPage; private LoginPage loginPage; - private String folderName = "new_folder"; + private String folderName = "new_folder"; + private File file = new File("src/main/resources/HelloWorld.txt"); @BeforeTest public void beforeTest() { - getDriver().get(LOGIN_URL); - cloudPage = new CloudPage(getDriver()); loginPage = new LoginPage(getDriver()); - User user = new User(); user.setLogin(LOGIN); user.setPassword(PASSWORD); - loginPage.doLogin(user); getDriver().get(CLOUD_URL); } @Test(priority = 1) public void newFolderTest() { - cloudPage.createNewFolder(folderName); Assert.assertTrue(cloudPage.isFolderExist(folderName)); - } - @Test(priority = 2,dependsOnMethods = {"newFolderTest"}) - public void removeFolderTest() { + + @Test(dependsOnMethods = {"newFolderTest", "dragAndDropTest", "shareLinkTest"}) + public void removeFolderTest() { + getDriver().get(CLOUD_URL); + cloudPage.closeDialog(); cloudPage.removeFolder(folderName); - Assert.assertFalse(cloudPage.isFolderExist(folderName)); + Assert.assertTrue(cloudPage.isFolderEmpty()); + } + @Test(priority = 3) + public void uploadFileTest() { + cloudPage.goToRootFolder(); + cloudPage.uploadFile(file.getAbsolutePath()); + Assert.assertTrue(cloudPage.isFileUploaded(file.getName())); } + @Test(dependsOnMethods = {"newFolderTest", "uploadFileTest"}) + public void dragAndDropTest() { + cloudPage.goToRootFolder(); + cloudPage.moveFileToFolder(folderName, file.getName()); + cloudPage.goToFolder(folderName); + Assert.assertTrue(cloudPage.isFileUploaded(file.getName())); + } + + @Test(dependsOnMethods = {"dragAndDropTest"}) + public void shareLinkTest() { + String sharedFileURL = cloudPage.getShareLink(file.getName()); + driver.get(sharedFileURL); + Assert.assertTrue(cloudPage.isSharedLinkExist(file.getName())); + } } diff --git a/src/main/resources/HelloWorld.txt b/src/main/resources/HelloWorld.txt new file mode 100644 index 0000000..693cf43 --- /dev/null +++ b/src/main/resources/HelloWorld.txt @@ -0,0 +1 @@ +"Hello World!" \ No newline at end of file diff --git a/src/main/resources/cloud/suite.xml b/src/main/resources/cloud/suite.xml index 4a06800..5559f79 100644 --- a/src/main/resources/cloud/suite.xml +++ b/src/main/resources/cloud/suite.xml @@ -2,20 +2,9 @@ - - + - - + - - - - - - - - - diff --git a/src/main/resources/mail/suite.xml b/src/main/resources/mail/suite.xml index 4386ce4..8340ce2 100644 --- a/src/main/resources/mail/suite.xml +++ b/src/main/resources/mail/suite.xml @@ -3,19 +3,13 @@ - - - - - - From 25414c9d0b526a9eadab8416802265b695e75983 Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Sun, 9 Feb 2020 17:50:27 +0300 Subject: [PATCH 09/13] WD Framework part two(clean) --- src/main/java/by/academy/it/page/BasePage.java | 11 +++++------ src/main/java/by/academy/it/page/LoginPage.java | 6 +----- src/main/java/by/academy/it/page/MailPage.java | 9 +++------ src/main/java/by/academy/it/test/LoginTest.java | 1 - src/main/java/by/academy/it/test/SendMailTest.java | 3 --- 5 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/main/java/by/academy/it/page/BasePage.java b/src/main/java/by/academy/it/page/BasePage.java index b50c8a0..66a6b88 100644 --- a/src/main/java/by/academy/it/page/BasePage.java +++ b/src/main/java/by/academy/it/page/BasePage.java @@ -1,8 +1,6 @@ package by.academy.it.page; import org.openqa.selenium.By; -import org.openqa.selenium.ElementClickInterceptedException; -import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; @@ -20,8 +18,6 @@ public BasePage(WebDriver driver) { this.driver = driver; wait = new WebDriverWait(driver, 10, 500) .withMessage("Element was not found in X seconds"); - // .ignoring(StaleElementReferenceException.class); - // .ignoring(ElementClickInterceptedException.class); } public WebDriver getDriver() { @@ -48,11 +44,14 @@ public Boolean apply(WebDriver driver) { } }); } - public void waitStaleness(String xpath){ + + //ждет пока не произойдет StaleElementReferenceException у элемента + public void waitStaleness(String xpath) { wait.until(ExpectedConditions.stalenessOf(driver.findElement(By.xpath(xpath)))); } + //клик правой кнопкой мыши по элементу - public void doRightMouseClick (String xPath){ + public void doRightMouseClick(String xPath) { Actions builder = new Actions(getDriver()); WebElement element = driver.findElement(By.xpath(xPath)); builder.contextClick(element).build().perform(); diff --git a/src/main/java/by/academy/it/page/LoginPage.java b/src/main/java/by/academy/it/page/LoginPage.java index d5122d6..28a8116 100644 --- a/src/main/java/by/academy/it/page/LoginPage.java +++ b/src/main/java/by/academy/it/page/LoginPage.java @@ -40,24 +40,22 @@ public void enterPassword(String password) { //вводим пароль WebElement passwordField = waitVisible(PASSWORD_FIELD); passwordField.sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.DELETE)); - passwordField.sendKeys(password); // ищем кнопку для входа на страницу и жмем ее WebElement enterButton = waitVisible(ENTER_BUTTON); enterButton.click(); - } public void enterLogin(String login) { WebElement loginField = waitVisible(LOGIN_INPUT_LOCATOR); loginField.sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.DELETE)); loginField.sendKeys(login); - // нажимаем по enter password кнопке WebElement enterPasswordButton = waitVisible(ENTER_PASSWORD_BUTTON); enterPasswordButton.click(); } + // выходим из почты public void doLogout() { WebElement logoutButton = waitVisible(LOGOUT_LINK); logoutButton.click(); @@ -75,6 +73,4 @@ public String getErrorLoginMessage() { WebElement errorMessage = waitVisible(LOGIN_ERROR_MESSAGE); return errorMessage.getText(); } - - } diff --git a/src/main/java/by/academy/it/page/MailPage.java b/src/main/java/by/academy/it/page/MailPage.java index a46eaca..ee72ac0 100644 --- a/src/main/java/by/academy/it/page/MailPage.java +++ b/src/main/java/by/academy/it/page/MailPage.java @@ -12,7 +12,6 @@ public class MailPage extends BasePage { private static final String MAIL_TEXT_FIELD = "//div[@role='textbox']"; private static final String SEND_BUTTON = "//span[text()=\"Отправить\"]"; private static final String SENT_EMAILS_BUTTON = "//a[@href=\"/sent/\"]"; - private static final String EMAIL_FROM = "//span[contains(@title, 'kalacheva.tamara@bk.ru')]"; private static final String INBOX_EMAILS_BUTTON = "//a[@href=\"/inbox/\"]"; private static final String CLOSE_DIALOG_BUTTON = "//span[@title='Закрыть']"; private static final String SELECT_ALL_BUTTON = "//span[@title='Выделить все']/parent::div"; @@ -31,7 +30,6 @@ public class MailPage extends BasePage { private static final String TRASH_FOLDER = "//a[@href='/trash/']"; private static final String E_PREFIX = "//span[contains(@title, '"; private static final String E_POSTFIX = "')]"; - private static final String TITLE = "title"; public MailPage(WebDriver driver) { super(driver); @@ -52,11 +50,11 @@ public void sendNewMail(String addres, String topic, String text) { WebElement sendEmtyButton = waitVisible(SEND_EMPTY_BOOTON); sendEmtyButton.click(); } - closeSentEmailDialog(); } - public void sendNewMail(Letter letter) { + // отправляет новое письмо + public void sendNewMail(Letter letter) { newMail(); fillAddres(letter.getAddress()); fillTopic(letter.getTopic()); @@ -70,9 +68,9 @@ public void sendNewMail(Letter letter) { WebElement sendEmtyButton = waitVisible(SEND_EMPTY_BOOTON); sendEmtyButton.click(); } - closeSentEmailDialog(); } + // создает и сохраняет черновик письма public void createDraftMail(String addres, String topic, String text) { newMail(); @@ -201,7 +199,6 @@ public void saveDraftEmail() { waitVisible(NOTIFY_MESSAGE_TEXT); //закрыть уведомление waitVisible(CLOSE_NOTIFY_MESSAGE).click(); - } // получает текст сообщения, что папка пуста diff --git a/src/main/java/by/academy/it/test/LoginTest.java b/src/main/java/by/academy/it/test/LoginTest.java index b60122e..44277bd 100644 --- a/src/main/java/by/academy/it/test/LoginTest.java +++ b/src/main/java/by/academy/it/test/LoginTest.java @@ -14,7 +14,6 @@ public void loginToMailTest() { User user = new User(); user.setLogin(LOGIN); user.setPassword(PASSWORD); - loginPage.doLogin(user); Assert.assertEquals(loginPage.getLoggedUserMail(), LOGIN, "Testing of logging with valid data is failed"); diff --git a/src/main/java/by/academy/it/test/SendMailTest.java b/src/main/java/by/academy/it/test/SendMailTest.java index b22756a..142d158 100644 --- a/src/main/java/by/academy/it/test/SendMailTest.java +++ b/src/main/java/by/academy/it/test/SendMailTest.java @@ -21,20 +21,17 @@ public class SendMailTest extends BaseTest { @BeforeTest public void beforeTest() { - getDriver().get(LOGIN_URL); loginPage = new LoginPage(getDriver()); mailPage = new MailPage(getDriver()); User user = new User(); user.setLogin(LOGIN); user.setPassword(PASSWORD); - loginPage.doLogin(user); } @AfterTest public void afterTest() { - // выходим из почты loginPage.doLogout(); } From d6455258495cb6edca3193245be272bfdb42ee43 Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Mon, 10 Feb 2020 20:26:22 +0300 Subject: [PATCH 10/13] WD Framework part two(clean)new --- src/main/java/by/academy/it/page/CloudPage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/by/academy/it/page/CloudPage.java b/src/main/java/by/academy/it/page/CloudPage.java index 004d6e9..f03ef8b 100644 --- a/src/main/java/by/academy/it/page/CloudPage.java +++ b/src/main/java/by/academy/it/page/CloudPage.java @@ -134,7 +134,7 @@ public void goToRootFolder() { //возвращает URL на расшаренный файл public String getShareLink(String fileName) { WebElement file = waitVisible(SHARE_PREFIX + fileName + SHARE_POSTFIX); - file.findElement(By.xpath(SELECT_FILE_CHECKBOX)); + file.findElement(By.xpath(SELECT_FILE_CHECKBOX)).click(); file.findElement(By.xpath(PUBLISH_BUTTON)).click(); return waitVisible(COPY_LINK).getAttribute("value"); } From 60e15a11c839eefd1393a6db24bd954c5778c993 Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Sun, 16 Feb 2020 02:53:39 +0300 Subject: [PATCH 11/13] WD Framework part THREE (total trash) --- .gitignore | 3 + pom.xml | 17 ++ .../java/by/academy/it/framework/Browser.java | 115 ++++++++++ .../java/by/academy/it/framework/Log.java | 71 ++++++ .../academy/it/framework/TestingListener.java | 52 +++++ .../java/by/academy/it/page/BasePage.java | 51 ++--- .../java/by/academy/it/page/CloudPage.java | 174 --------------- .../java/by/academy/it/page/Constants.java | 16 ++ .../by/academy/it/page/cloud/CloudPage.java | 206 ++++++++++++++++++ .../academy/it/page/{ => mail}/LoginPage.java | 24 +- .../academy/it/page/{ => mail}/MailPage.java | 61 +++++- .../it/service/cloud/CloudService.java | 86 ++++++++ .../academy/it/service/mail/LoginService.java | 89 ++++++++ .../academy/it/service/mail/MailService.java | 110 ++++++++++ .../java/by/academy/it/test/BaseTest.java | 23 +- .../java/by/academy/it/test/CloudTest.java | 64 ------ .../java/by/academy/it/test/LoginTest.java | 37 ---- .../java/by/academy/it/test/SendMailTest.java | 113 ---------- .../by/academy/it/test/cloud/CloudTest.java | 57 +++++ .../by/academy/it/test/mail/LoginTest.java | 39 ++++ .../by/academy/it/test/mail/SendMailTest.java | 94 ++++++++ src/main/resources/Log4j.properties | 18 ++ src/main/resources/cloud/suite.xml | 2 +- src/main/resources/mail/suite.xml | 4 +- 24 files changed, 1077 insertions(+), 449 deletions(-) create mode 100644 src/main/java/by/academy/it/framework/Browser.java create mode 100644 src/main/java/by/academy/it/framework/Log.java create mode 100644 src/main/java/by/academy/it/framework/TestingListener.java delete mode 100644 src/main/java/by/academy/it/page/CloudPage.java create mode 100644 src/main/java/by/academy/it/page/Constants.java create mode 100644 src/main/java/by/academy/it/page/cloud/CloudPage.java rename src/main/java/by/academy/it/page/{ => mail}/LoginPage.java (72%) rename src/main/java/by/academy/it/page/{ => mail}/MailPage.java (77%) create mode 100644 src/main/java/by/academy/it/service/cloud/CloudService.java create mode 100644 src/main/java/by/academy/it/service/mail/LoginService.java create mode 100644 src/main/java/by/academy/it/service/mail/MailService.java delete mode 100644 src/main/java/by/academy/it/test/CloudTest.java delete mode 100644 src/main/java/by/academy/it/test/LoginTest.java delete mode 100644 src/main/java/by/academy/it/test/SendMailTest.java create mode 100644 src/main/java/by/academy/it/test/cloud/CloudTest.java create mode 100644 src/main/java/by/academy/it/test/mail/LoginTest.java create mode 100644 src/main/java/by/academy/it/test/mail/SendMailTest.java create mode 100644 src/main/resources/Log4j.properties diff --git a/.gitignore b/.gitignore index 95fdb42..f452d18 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ # Mac OS files .DS_Store +#log files +*.log* + diff --git a/pom.xml b/pom.xml index 6ce8d83..d268f02 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,13 @@ 3.8.1 + + + log4j + log4j + 1.2.17 + + @@ -87,5 +94,15 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + diff --git a/src/main/java/by/academy/it/framework/Browser.java b/src/main/java/by/academy/it/framework/Browser.java new file mode 100644 index 0000000..3746446 --- /dev/null +++ b/src/main/java/by/academy/it/framework/Browser.java @@ -0,0 +1,115 @@ +package by.academy.it.framework; + +import java.util.concurrent.TimeUnit; +import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.UnexpectedAlertBehaviour; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.internal.WrapsDriver; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.support.ui.ExpectedCondition; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.Wait; +import org.openqa.selenium.support.ui.WebDriverWait; + +public class Browser implements WrapsDriver { + + private static Browser instance; + private static WebDriver driver; + private static Wait wait; + + private Browser() { + System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe"); + // from here: https://stackoverflow.com/questions/26772793/org-openqa-selenium-unhandledalertexception-unexpected-alert-open + DesiredCapabilities dc = new DesiredCapabilities(); + dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT); + driver = new ChromeDriver(dc); + driver.manage().window().maximize(); + driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); + wait = new WebDriverWait(driver, 10, 500) + .withMessage("Element was not found in X seconds"); + + } + + public static Browser getInstance() { + if (instance == null || driver == null) { + instance = new Browser(); + } + return instance; + } + + @Override + public WebDriver getWrappedDriver() { + return driver; + } + + public void stopBrowser() { + try { + getInstance().getWrappedDriver().quit(); + getInstance().driver = null; + instance = null; + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void open(String url) { + driver.get(url); + } + + public void refresh() { + driver.navigate().refresh(); + } + + // from here: https://stackoverflow.com/questions/10660291/highlight-elements-in-webdriver-during-runtime + // Подсвечиваем элемент красной рамкой + public WebElement highlightElement(WebElement element) { + if (driver instanceof JavascriptExecutor) { + ((JavascriptExecutor) driver) + .executeScript("arguments[0].style.border='3px solid red'", element); + } + return element; + } + + //клик правой кнопкой мыши по элементу + public void doRightMouseClick(String xPath) { + Actions builder = new Actions(driver); + WebElement element = driver.findElement(By.xpath(xPath)); + builder.contextClick(element).build().perform(); + } + + //ждет пока не произойдет StaleElementReferenceException у элемента + public void waitStaleness(String xPath) { + wait.until(ExpectedConditions.stalenessOf(driver.findElement(By.xpath(xPath)))); + } + + // from here: https://stackoverflow.com/questions/15237129/webdriverwait-for-an-element-attribute-to-change + //ждет пока не появится атрибут + public boolean waiteForAttribute(final By by, final String atributeName) { + return wait.until(new ExpectedCondition() { + public Boolean apply(WebDriver driver) { + WebElement element = driver.findElement(by); + String attributeValue = element.getAttribute(atributeName); + if (attributeValue != null) { + return true; + } else { + return false; + } + } + }); + } + + // Ждет пока указанный элемент не появится на странице и не станет видимым (опрос элемента происходит в соответствии с настройками wait) + public WebElement waitVisible(String xpathLocator) { + wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpathLocator))); + WebElement el = wait + .until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathLocator))); + el = highlightElement(el); + return el; + } + +} diff --git a/src/main/java/by/academy/it/framework/Log.java b/src/main/java/by/academy/it/framework/Log.java new file mode 100644 index 0000000..c262854 --- /dev/null +++ b/src/main/java/by/academy/it/framework/Log.java @@ -0,0 +1,71 @@ +package by.academy.it.framework; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + +// Класс написан просто для примера. Целесообразнее вызывать логгер и его методы напрямую в классе. +public class Log { + + static { + PropertyConfigurator.configureAndWatch("log4j/log4j.properties"); + } + + private static final Logger logger = Logger.getLogger("by.academy.it"); + + public static void info(Logger log, Object message) { + log.info(message); + } + + public static void debug(Logger log, Object message) { + log.debug(message); + } + + public static void error(Logger log, Object message) { + log.error(message); + } + + public static void info(Object message) { + logger.info(message); + } + + public static void debug(Object message) { + logger.debug(message); + } + + public static void error(Object message) { + logger.error(message); + } + + + + public static void debugStart(Logger log, Object... params) { + String message = getMethodName(27) + "()"; + if (params != null && params.length > 0) { + message = message + " PARAMS:" + params.toString(); + } + log.debug(message + " START"); + } + + public static void debugEnd(Logger log, Object returnObject) { + String message = getMethodName(27) + "()"; + if (returnObject != null) { + message = message + " RETURNS:" + returnObject.toString(); + } + log.debug(message + " END"); + } + + public static void debugEnd(Logger log) { + String message = getMethodName(27) + "()"; + log.debug(message + " END"); + } + + // from here: https://stackoverflow.com/questions/442747/getting-the-name-of-the-currently-executing-method + //Динамически достаем из стека ИМЯ МЕТОДА в котором вызывался лог, чтобы не писать его руками + private static String getMethodName(final int depth) { + final StackTraceElement[] ste = Thread.currentThread().getStackTrace(); + // Arrays.asList(ste).stream().forEach(x->logg.debug(x.getClassName())); + //System. out.println(ste[ste.length-depth].getClassName()+"#"+ste[ste.length-depth].getMethodName()); + // return ste[ste.length - depth].getMethodName(); //Wrong, fails for depth = 0 + return ste[ste.length - 1 - depth].getMethodName(); //Thank you Tom Tresansky + } +} diff --git a/src/main/java/by/academy/it/framework/TestingListener.java b/src/main/java/by/academy/it/framework/TestingListener.java new file mode 100644 index 0000000..f001c8c --- /dev/null +++ b/src/main/java/by/academy/it/framework/TestingListener.java @@ -0,0 +1,52 @@ +package by.academy.it.framework; + +import org.testng.ITestContext; +import org.testng.ITestListener; +import org.testng.ITestResult; + +public class TestingListener implements ITestListener { + private long methodStartTime; + + @Override + public void onStart(ITestContext iTestContext) { + Log.info("\n" + "[TEST STARTED]" + iTestContext.getName()); + } + + @Override + public void onFinish(ITestContext iTestContext) { + Log.info("[TEST ENDED]" + iTestContext.getName() + + "\n" + "PASSED: " + iTestContext.getPassedTests().size() + + "\n" + "SKIPPED: " + iTestContext.getSkippedTests().size() + + "\n" + "FAILED: " + iTestContext.getFailedTests().size()); + } + + @Override + public void onTestStart(ITestResult iTestResult) { + methodStartTime = iTestResult.getStartMillis(); + Log.info("[TEST METHOD STARTED]" + iTestResult.getName()); + } + + @Override + public void onTestSuccess(ITestResult iTestResult) { + Log.info("[TEST METHOD SUCCESSFULLY COMPLETED]" + iTestResult.getName() + " SPENT TIME(ms): " + + (iTestResult.getEndMillis() - methodStartTime)); + } + + @Override + public void onTestFailure(ITestResult iTestResult) { +// Log.error("[TEST METHOD FAILED]" + iTestResult.getName() + " SPENT TIME(ms): " +// + (iTestResult.getEndMillis() - methodStartTime), iTestResult.getThrowable()); +// Browser.getInstance().screenshot(); + } + + @Override + public void onTestSkipped(ITestResult iTestResult) { + Log.info("[TEST METHOD SKIPPED]" + iTestResult.getName()); + } + + @Override + public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) { + Log.info("[TEST METHOD FAILED WITHIN SUCCESS PERCENTAGE]" + iTestResult.getName()+ " SPENT TIME(ms): " + + (iTestResult.getEndMillis() - methodStartTime)); + } +} diff --git a/src/main/java/by/academy/it/page/BasePage.java b/src/main/java/by/academy/it/page/BasePage.java index 66a6b88..cc138ab 100644 --- a/src/main/java/by/academy/it/page/BasePage.java +++ b/src/main/java/by/academy/it/page/BasePage.java @@ -1,6 +1,9 @@ package by.academy.it.page; +import by.academy.it.framework.Browser; +import org.apache.log4j.Logger; import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; @@ -11,49 +14,33 @@ public class BasePage { - private WebDriver driver; - private Wait wait; + private static Logger logger = Logger.getLogger(BasePage.class); + private Browser browser; - public BasePage(WebDriver driver) { - this.driver = driver; - wait = new WebDriverWait(driver, 10, 500) - .withMessage("Element was not found in X seconds"); + public BasePage() { + logger.debug("BasePage constructor start"); + browser = Browser.getInstance(); + logger.debug("BasePage constructor end"); } public WebDriver getDriver() { - return driver; + logger.debug("getDriver returns driver instance"); + return browser.getWrappedDriver(); } // Ждет пока указанный элемент не появится на странице и не станет видимым (опрос элемента происходит в соответствии с настройками wait) public WebElement waitVisible(String xpathLocator) { - wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpathLocator))); - return wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathLocator))); - } - - // from here: https://stackoverflow.com/questions/15237129/webdriverwait-for-an-element-attribute-to-change - public boolean waiteForAttribute(final By by, final String atributeName) { - return wait.until(new ExpectedCondition() { - public Boolean apply(WebDriver driver) { - WebElement element = driver.findElement(by); - String attributeValue = element.getAttribute(atributeName); - if (attributeValue != null) { - return true; - } else { - return false; - } - } - }); + logger.debug("waitVisible(" + xpathLocator + ") start"); + WebElement el = browser.waitVisible(xpathLocator); + logger.debug("waitVisible(" + xpathLocator + ") end. return:" + el.toString()); + return el; } //ждет пока не произойдет StaleElementReferenceException у элемента - public void waitStaleness(String xpath) { - wait.until(ExpectedConditions.stalenessOf(driver.findElement(By.xpath(xpath)))); + public void waitStaleness(String xPath) { + logger.debug("waitStaleness(" + xPath + ") start"); + browser.waitStaleness(xPath); + logger.debug("waitStaleness(" + xPath + ") end"); } - //клик правой кнопкой мыши по элементу - public void doRightMouseClick(String xPath) { - Actions builder = new Actions(getDriver()); - WebElement element = driver.findElement(By.xpath(xPath)); - builder.contextClick(element).build().perform(); - } } diff --git a/src/main/java/by/academy/it/page/CloudPage.java b/src/main/java/by/academy/it/page/CloudPage.java deleted file mode 100644 index f03ef8b..0000000 --- a/src/main/java/by/academy/it/page/CloudPage.java +++ /dev/null @@ -1,174 +0,0 @@ -package by.academy.it.page; - -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; - -public class CloudPage extends BasePage { - - private final String CREATE = "//div[text()='Создать']"; - private final String NEW_FOLDER = "//div[text()='Папку']"; - private final String FOLDER_NAME = "//input[@placeholder='Введите имя папки']"; - private final String CREATE_FOLDER_BUTTON = "//button[text()='Создать']"; - private final String NEW_FOLDER_BREADCRUMB_PREFIX = "// div[@id='breadcrumbs']//span[text()='"; - private final String NEW_FOLDER_BREADCRUMB_POSTFIX = "']"; - private final String FOLDER_PATH_PREFIX = "//*[@data-id='/"; - private final String FOLDER_PATH_POSTFIX = "']/parent::a"; - private final String DELETE_FOLDER = "//div[text()='Удалить']"; - private final String APPROVE_FOLDER_REMOVE = "//button[@data-name='remove']"; - private final String REMOVE_MESSAGE = "//span[text()='Удалено: 1 папка']"; - private final String CLOSE_DIALOG = "//div[@class='layer_trashbin-tutorial']//button[@data-name='close']"; - private final String UPLOAD = "//div[contains(@class,'Toolbar__root')]//div[@data-name='upload']"; - private final String FILE_PATH_INPUT = "//div[contains(@class,'layer_upload__controls__btn-wrapper')]//input[@type='file']"; - private final String UPLOAD_MESSAGE = "//span[contains(text(),'Загрузка завершена')]"; - private final String FILE_PATH_PREFIX = "//div[contains(@data-id,'"; - private final String FILE_PATH_POSTFIX = "') and @data-name='link']"; - private final String XPATH_PREFIX = "//div[contains(@data-id,'"; - private final String XPATH_POSTFIX = "') and @data-name='link']"; - private final String SELECT_FILE_CHECKBOX = "//div[@class='b-checkbox__box']"; - private final String MOVE_CONFIRM_BUTTON = "// div[@class='layer_move-confirm']//button[@data-name='move']"; - private final String FOLDER_NAME_PREFIX = "//div[@class='navmenu']//div[@data-id='/"; - private final String FOLDER_NAME_POSTFIX = "']"; - private final String ROOT_FOLDER = "//div[@class='navmenu']//a[@href='/home/']"; - private final String ROOT_FOLDER_BREADCRUMBS = "// div[@id='breadcrumbs']//span[text()='Облако']"; - private final String SHARE_PREFIX = "//div[contains(@data-id,'"; - private final String SHARE_POSTFIX = "') and @data-name='link']"; - private final String PUBLISH_BUTTON = "//button[@data-name='publish']"; - private final String COPY_LINK = "//input[@title='Скопировать']"; - private final String SHARED_FILE_PREFIX = "//div[text()='"; - private final String SHARED_FILE_POSTFIX = "']"; - private final String CLOSE_DIALOG_COMMERCIAL = "//div[contains(@class, 'Dialog__root_whiteCloseIcon')]/*[name()= 'svg']"; - private final String EMPTY_FOLDER_MESSAGE = "//div[text()='В этой папке нет содержимого']"; - - public CloudPage(WebDriver driver) { - super(driver); - } - - //создаем папку в облаке - public void createNewFolder(String name) { - waitVisible(CREATE).click(); - waitVisible(NEW_FOLDER).click(); - waitVisible(FOLDER_NAME).sendKeys(name); - waitVisible(CREATE_FOLDER_BUTTON).click(); - waitVisible(NEW_FOLDER_BREADCRUMB_PREFIX + name + NEW_FOLDER_BREADCRUMB_POSTFIX); - } - - //проверяем, что папка создана - public boolean isFolderExist(String folderName) { - boolean result = false; - try { - //генерим динамический xPath для переданного в параметре метода имени папки - String xpathString = FOLDER_PATH_PREFIX + folderName + FOLDER_PATH_POSTFIX; - waitVisible(xpathString); - result = true; - } catch (Exception e) { - e.printStackTrace(); - result = false; - } - return result; - } - - //удаляем папку - public void removeFolder(String name) { - String xpathString = FOLDER_PATH_PREFIX + name + FOLDER_PATH_POSTFIX; - waitVisible(xpathString).click(); - waitVisible(DELETE_FOLDER).click(); - waitVisible(APPROVE_FOLDER_REMOVE).click(); - waitVisible(REMOVE_MESSAGE); - //закрываем диалог - waitVisible(CLOSE_DIALOG).click(); - } - - // загрузить файл - public void uploadFile(String filePath) { - waitVisible(UPLOAD).click(); - getDriver().findElement(By.xpath(FILE_PATH_INPUT)).sendKeys(filePath); - //ждем пока закончится загрузка(10с) - waitVisible(UPLOAD_MESSAGE); - } - - //проверяем, что файл загружен - public boolean isFileUploaded(String fileName) { - boolean result = false; - try { - //генерим динамический xPath для переданного в параметре метода имени папки - String xpathString = FILE_PATH_PREFIX + fileName + FILE_PATH_POSTFIX; - waitVisible(xpathString); - result = true; - } catch (Exception e) { - e.printStackTrace(); - result = false; - } - return result; - } - - // перетягивание файла в папку - public void moveFileToFolder(String folderName, String fileName) { - WebElement file = waitVisible(XPATH_PREFIX + fileName + XPATH_POSTFIX); - WebElement folder = waitVisible(XPATH_PREFIX + folderName + XPATH_POSTFIX); - file.findElement(By.xpath(SELECT_FILE_CHECKBOX)).click(); - Actions builder = new Actions(getDriver()); - builder.clickAndHold(file) - .moveToElement(folder) - .moveByOffset(5, 5) - .release() - .build() - .perform(); - waitVisible(MOVE_CONFIRM_BUTTON).click(); - } - - // переходим в указанную папку - public void goToFolder(String nameFolder) { - waitStaleness(FOLDER_NAME_PREFIX + nameFolder + FOLDER_NAME_POSTFIX); - waitVisible(FOLDER_NAME_PREFIX + nameFolder + FOLDER_NAME_POSTFIX).click(); - waitVisible(NEW_FOLDER_BREADCRUMB_PREFIX + nameFolder + NEW_FOLDER_BREADCRUMB_POSTFIX); - } - - // переходим в корневую папку - public void goToRootFolder() { - waitVisible(ROOT_FOLDER).click(); - waitVisible(ROOT_FOLDER_BREADCRUMBS); - } - - //возвращает URL на расшаренный файл - public String getShareLink(String fileName) { - WebElement file = waitVisible(SHARE_PREFIX + fileName + SHARE_POSTFIX); - file.findElement(By.xpath(SELECT_FILE_CHECKBOX)).click(); - file.findElement(By.xpath(PUBLISH_BUTTON)).click(); - return waitVisible(COPY_LINK).getAttribute("value"); - } - - // проверяем есть ли ссылка на скачивание расшаренного файла - public boolean isSharedLinkExist(String fileName) { - boolean result = false; - try { - //генерим динамический xPath для переданного в параметре метода имени файла - String xpathString = SHARED_FILE_PREFIX + fileName + SHARED_FILE_POSTFIX; - waitVisible(xpathString); - result = true; - } catch (Exception e) { - e.printStackTrace(); - result = false; - } - return result; - } - - //закрываем рекламный диалог - public void closeDialog() { - waitVisible(CLOSE_DIALOG_COMMERCIAL).click(); - } - - // - public boolean isFolderEmpty() { - boolean result = false; - try { - waitVisible(EMPTY_FOLDER_MESSAGE); - result = true; - } catch (Exception e) { - e.printStackTrace(); - result = false; - } - return result; - } -} diff --git a/src/main/java/by/academy/it/page/Constants.java b/src/main/java/by/academy/it/page/Constants.java new file mode 100644 index 0000000..0f27a40 --- /dev/null +++ b/src/main/java/by/academy/it/page/Constants.java @@ -0,0 +1,16 @@ +package by.academy.it.page; + +public class Constants { + public static final String LOGIN = "kalacheva.tamara@bk.ru"; + public static final String PASSWORD = "&YPviFA1zpu1"; + public static final String INVALID_LOGIN = "kalachevaaaa.tamara@bk.ru"; + public static final String INVALID_PASSWORD = "&YPviFA1zpu1po"; + public static final String LOGIN_URL = "https://account.mail.ru/login"; + public static final String CLOUD_URL = "https://cloud.mail.ru"; + + public static final String TOPIC = "test letter"; + public static final String TEXT = "Some message "; + public static final String EMPTY = ""; + public static final String DRAFT_ADDRESS = "draft@mail.ru"; + +} diff --git a/src/main/java/by/academy/it/page/cloud/CloudPage.java b/src/main/java/by/academy/it/page/cloud/CloudPage.java new file mode 100644 index 0000000..d7485e5 --- /dev/null +++ b/src/main/java/by/academy/it/page/cloud/CloudPage.java @@ -0,0 +1,206 @@ +package by.academy.it.page.cloud; + +import by.academy.it.framework.Log; +import by.academy.it.page.BasePage; +import org.apache.log4j.Logger; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; + +public class CloudPage extends BasePage { + + private static final String CREATE = "//div[text()='Создать']"; + private static final String NEW_FOLDER = "//div[text()='Папку']"; + private static final String FOLDER_NAME = "//input[@placeholder='Введите имя папки']"; + private static final String CREATE_FOLDER_BUTTON = "//button[text()='Создать']"; + private static final String NEW_FOLDER_BREADCRUMB_PREFIX = "// div[@id='breadcrumbs']//span[text()='"; + private static final String NEW_FOLDER_BREADCRUMB_POSTFIX = "']"; + private static final String FOLDER_PATH_PREFIX = "//*[@data-id='/"; + private static final String FOLDER_PATH_POSTFIX = "']/parent::a"; + private static final String DELETE_FOLDER = "//div[text()='Удалить']"; + private static final String APPROVE_FOLDER_REMOVE = "//button[@data-name='remove']"; + private static final String REMOVE_MESSAGE = "//span[text()='Удалено: 1 папка']"; + private static final String CLOSE_DIALOG = "//div[@class='layer_trashbin-tutorial']//button[@data-name='close']"; + private static final String UPLOAD = "//div[contains(@class,'Toolbar__root')]//div[@data-name='upload']"; + private static final String FILE_PATH_INPUT = "//div[contains(@class,'layer_upload__controls__btn-wrapper')]//input[@type='file']"; + private static final String UPLOAD_MESSAGE = "//span[contains(text(),'Загрузка завершена')]"; + private static final String FILE_PATH_PREFIX = "//div[contains(@data-id,'"; + private static final String FILE_PATH_POSTFIX = "') and @data-name='link']"; + private static final String XPATH_PREFIX = "//div[contains(@data-id,'"; + private static final String XPATH_POSTFIX = "') and @data-name='link']"; + private static final String SELECT_FILE_CHECKBOX = "//div[@class='b-checkbox__box']"; + private static final String MOVE_CONFIRM_BUTTON = "// div[@class='layer_move-confirm']//button[@data-name='move']"; + private static final String FOLDER_NAME_PREFIX = "//div[@class='navmenu']//div[@data-id='/"; + private static final String FOLDER_NAME_POSTFIX = "']"; + private static final String ROOT_FOLDER = "//div[@class='navmenu']//a[@href='/home/']"; + private static final String ROOT_FOLDER_BREADCRUMBS = "// div[@id='breadcrumbs']//span[text()='Облако']"; + private static final String SHARE_PREFIX = "//div[contains(@data-id,'"; + private static final String SHARE_POSTFIX = "') and @data-name='link']"; + private static final String PUBLISH_BUTTON = "//button[@data-name='publish']"; + private static final String COPY_LINK = "//input[@title='Скопировать']"; + private static final String SHARED_FILE_PREFIX = "//div[text()='"; + private static final String SHARED_FILE_POSTFIX = "']"; + private static final String CLOSE_DIALOG_COMMERCIAL = "//div[contains(@class, 'Dialog__root_whiteCloseIcon')]/*[name()= 'svg']"; + private static final String EMPTY_FOLDER_MESSAGE = "//div[text()='В этой папке нет содержимого']"; + private static Logger logger = Logger.getLogger(CloudPage.class); + + public CloudPage() { + super(); + logger.debug("CloudPage constructor finished"); + } + + //создаем папку в облаке + public void createNewFolder(String name) { + Log.debugStart(logger, name); + + waitVisible(CREATE).click(); + waitVisible(NEW_FOLDER).click(); + waitVisible(FOLDER_NAME).sendKeys(name); + waitVisible(CREATE_FOLDER_BUTTON).click(); + logger.debug("PREFIX " + NEW_FOLDER_BREADCRUMB_PREFIX); + waitVisible(NEW_FOLDER_BREADCRUMB_PREFIX + name + NEW_FOLDER_BREADCRUMB_POSTFIX); + + Log.debugEnd(logger); + } + + //проверяем, что папка создана + public boolean isFolderExist(String folderName) { + logger.debug("isFolderExist(" + folderName + ") start"); + boolean result = false; + try { + //генерим динамический xPath для переданного в параметре метода имени папки + String xpathString = FOLDER_PATH_PREFIX + folderName + FOLDER_PATH_POSTFIX; + waitVisible(xpathString); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + logger.debug("isFolderExist(" + folderName + ") end. return:" + result); + return result; + } + + //удаляем папку + public void removeFolder(String name) { + logger.debug("removeFolder(" + name + ") start"); + String xpathString = FOLDER_PATH_PREFIX + name + FOLDER_PATH_POSTFIX; + waitVisible(xpathString).click(); + waitVisible(DELETE_FOLDER).click(); + waitVisible(APPROVE_FOLDER_REMOVE).click(); + waitVisible(REMOVE_MESSAGE); + //закрываем диалог + waitVisible(CLOSE_DIALOG).click(); + logger.debug("removeFolder(" + name + ") end"); + } + + // загрузить файл + public void uploadFile(String filePath) { + logger.debug("removeFolder(" + filePath + ") start"); + waitVisible(UPLOAD).click(); + getDriver().findElement(By.xpath(FILE_PATH_INPUT)).sendKeys(filePath); + //ждем пока закончится загрузка(10с) + waitVisible(UPLOAD_MESSAGE); + logger.debug("removeFolder(" + filePath + ") end"); + } + + //проверяем, что файл загружен + public boolean isFileUploaded(String fileName) { + logger.debug("isFileUploaded(" + fileName + ") start"); + boolean result = false; + try { + //генерим динамический xPath для переданного в параметре метода имени папки + String xpathString = FILE_PATH_PREFIX + fileName + FILE_PATH_POSTFIX; + waitVisible(xpathString); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + logger.debug("isFileUploaded(" + fileName + ") end. return:" + result); + return result; + } + + // перетягивание файла в папку + public void moveFileToFolder(String folderName, String fileName) { + logger.debug("moveFileToFolder(" + folderName + ", " + fileName + ") start"); + WebElement file = waitVisible(XPATH_PREFIX + fileName + XPATH_POSTFIX); + WebElement folder = waitVisible(XPATH_PREFIX + folderName + XPATH_POSTFIX); + file.findElement(By.xpath(SELECT_FILE_CHECKBOX)).click(); + Actions builder = new Actions(getDriver()); + builder.clickAndHold(file) + .moveToElement(folder) + .moveByOffset(5, 5) + .release() + .build() + .perform(); + waitVisible(MOVE_CONFIRM_BUTTON).click(); + logger.debug("moveFileToFolder(" + folderName + ", " + fileName + ") end"); + } + + // переходим в указанную папку + public void goToFolder(String nameFolder) { + logger.debug("goToFolder(" + nameFolder + ") start"); + waitStaleness(FOLDER_NAME_PREFIX + nameFolder + FOLDER_NAME_POSTFIX); + waitVisible(FOLDER_NAME_PREFIX + nameFolder + FOLDER_NAME_POSTFIX).click(); + waitVisible(NEW_FOLDER_BREADCRUMB_PREFIX + nameFolder + NEW_FOLDER_BREADCRUMB_POSTFIX); + logger.debug("goToFolder(" + nameFolder + ") end"); + } + + // переходим в корневую папку + public void goToRootFolder() { + logger.debug("goToRootFolder() start"); + waitVisible(ROOT_FOLDER).click(); + waitVisible(ROOT_FOLDER_BREADCRUMBS); + logger.debug("goToRootFolder() start"); + } + + //возвращает URL на расшаренный файл + public String getShareLink(String fileName) { + logger.debug("getShareLink(" + fileName + ") start"); + WebElement file = waitVisible(SHARE_PREFIX + fileName + SHARE_POSTFIX); + file.findElement(By.xpath(SELECT_FILE_CHECKBOX)).click(); + file.findElement(By.xpath(PUBLISH_BUTTON)).click(); + String result = waitVisible(COPY_LINK).getAttribute("value"); + logger.debug("getShareLink(" + fileName + ") end. return:" + result); + return result; + } + + // проверяем есть ли ссылка на скачивание расшаренного файла + public boolean isSharedLinkExist(String fileName) { + logger.debug("isSharedLinkExist(" + fileName + ") start"); + boolean result = false; + try { + //генерим динамический xPath для переданного в параметре метода имени файла + String xpathString = SHARED_FILE_PREFIX + fileName + SHARED_FILE_POSTFIX; + waitVisible(xpathString); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + logger.debug("isSharedLinkExist(" + fileName + ") end. return:" + result); + return result; + } + + //закрываем рекламный диалог + public void closeDialog() { + logger.debug("closeDialog() start"); + waitVisible(CLOSE_DIALOG_COMMERCIAL).click(); + logger.debug("closeDialog() end"); + } + + //проверям пустая ли папка + public boolean isFolderEmpty() { + logger.debug("isFolderEmpty() start"); + boolean result = false; + try { + waitVisible(EMPTY_FOLDER_MESSAGE); + result = true; + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + logger.debug("isFolderEmpty() end. return:" + result); + return result; + } +} diff --git a/src/main/java/by/academy/it/page/LoginPage.java b/src/main/java/by/academy/it/page/mail/LoginPage.java similarity index 72% rename from src/main/java/by/academy/it/page/LoginPage.java rename to src/main/java/by/academy/it/page/mail/LoginPage.java index 28a8116..9381d45 100644 --- a/src/main/java/by/academy/it/page/LoginPage.java +++ b/src/main/java/by/academy/it/page/mail/LoginPage.java @@ -1,6 +1,8 @@ -package by.academy.it.page; +package by.academy.it.page.mail; import by.academy.it.model.User; +import by.academy.it.page.BasePage; +import org.apache.log4j.Logger; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -15,28 +17,35 @@ public class LoginPage extends BasePage { private static final String LOGIN_LINK = "//*[@id='PH_authLink']"; private static final String LOGGED_USER_MAIL = "//*[@id='PH_user-email']"; private static final String LOGIN_ERROR_MESSAGE = "//*[@data-test-id='error-footer-text']"; + private static Logger logger = Logger.getLogger(LoginPage.class); - public LoginPage(WebDriver driver) { - super(driver); + public LoginPage() { + logger.debug("LoginPage constructor finished"); } //выполнит вход в майл по указанному логину и паролю public void doLogin(String login, String password) { + logger.debug("doLogin(" + login + ", " + password + ") start"); //вызвали метод для ввода логина enterLogin(login); //вводим пароль enterPassword(password); waitVisible(LOGGED_USER_MAIL); + logger.debug("doLogin(" + login + ", " + password + ") end"); } + public void doLogin(User user) { + logger.info("doLogin(" + user.toString() + ") start"); //вызвали метод для ввода логина enterLogin(user.getLogin()); //вводим пароль enterPassword(user.getPassword()); waitVisible(LOGGED_USER_MAIL); + logger.info("doLogin(" + user.toString() + ") end"); } public void enterPassword(String password) { + logger.debug("enterPassword(" + password + ") start"); //вводим пароль WebElement passwordField = waitVisible(PASSWORD_FIELD); passwordField.sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.DELETE)); @@ -44,33 +53,42 @@ public void enterPassword(String password) { // ищем кнопку для входа на страницу и жмем ее WebElement enterButton = waitVisible(ENTER_BUTTON); enterButton.click(); + logger.debug("enterPassword(" + password + ") end"); } public void enterLogin(String login) { + logger.debug("enterLogin(" + login + ") start"); WebElement loginField = waitVisible(LOGIN_INPUT_LOCATOR); loginField.sendKeys(Keys.chord(Keys.CONTROL, "a", Keys.DELETE)); loginField.sendKeys(login); // нажимаем по enter password кнопке WebElement enterPasswordButton = waitVisible(ENTER_PASSWORD_BUTTON); enterPasswordButton.click(); + logger.debug("enterLogin(" + login + ") end"); } // выходим из почты public void doLogout() { + logger.debug("doLogout() start"); WebElement logoutButton = waitVisible(LOGOUT_LINK); logoutButton.click(); waitVisible(LOGIN_LINK); + logger.debug("doLogout() end"); } // возвращает email залогиненного usera public String getLoggedUserMail() { + logger.debug("getLoggedUserMail() start"); WebElement loggedUserMail = waitVisible(LOGGED_USER_MAIL); + logger.debug("getLoggedUserMail() end. return:" + loggedUserMail.getText()); return loggedUserMail.getText(); } // возвращает ошибку не верного логина public String getErrorLoginMessage() { + logger.debug("getErrorMessage() start"); WebElement errorMessage = waitVisible(LOGIN_ERROR_MESSAGE); + logger.debug("getErrorMessage() end. return:" + errorMessage.getText()); return errorMessage.getText(); } } diff --git a/src/main/java/by/academy/it/page/MailPage.java b/src/main/java/by/academy/it/page/mail/MailPage.java similarity index 77% rename from src/main/java/by/academy/it/page/MailPage.java rename to src/main/java/by/academy/it/page/mail/MailPage.java index ee72ac0..f279a49 100644 --- a/src/main/java/by/academy/it/page/MailPage.java +++ b/src/main/java/by/academy/it/page/mail/MailPage.java @@ -1,8 +1,11 @@ -package by.academy.it.page; +package by.academy.it.page.mail; import by.academy.it.model.Letter; +import by.academy.it.page.BasePage; +import org.apache.log4j.Logger; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; public class MailPage extends BasePage { @@ -30,13 +33,16 @@ public class MailPage extends BasePage { private static final String TRASH_FOLDER = "//a[@href='/trash/']"; private static final String E_PREFIX = "//span[contains(@title, '"; private static final String E_POSTFIX = "')]"; + private static Logger logger = Logger.getLogger(MailPage.class); - public MailPage(WebDriver driver) { - super(driver); + public MailPage() { + super(); + logger.debug("MailPage constructor finished"); } //Создает и отправляет новое письмо public void sendNewMail(String addres, String topic, String text) { + logger.debug("sendNewMail() start"); newMail(); fillAddres(addres); fillTopic(topic); @@ -51,10 +57,12 @@ public void sendNewMail(String addres, String topic, String text) { sendEmtyButton.click(); } closeSentEmailDialog(); + logger.debug("sendNewMail() end"); } // отправляет новое письмо public void sendNewMail(Letter letter) { + logger.debug("sendNewMail() start"); newMail(); fillAddres(letter.getAddress()); fillTopic(letter.getTopic()); @@ -69,90 +77,124 @@ public void sendNewMail(Letter letter) { sendEmtyButton.click(); } closeSentEmailDialog(); + logger.debug("sendNewMail() end"); } // создает и сохраняет черновик письма public void createDraftMail(String addres, String topic, String text) { + logger.debug("createDraftMail() start"); newMail(); fillAddres(addres); fillTopic(topic); fillMailText(text); saveDraftEmail(); + logger.debug("createDraftMail() end"); } //написать письмо public void newMail() { + logger.debug("newMail() start"); waitVisible(NEW_MAIL_BUTTON).click(); + logger.debug("newMail() end"); } //заполняет адрес письма "Кому"(адрес) public void fillAddres(String addres) { + logger.debug("fillAddres() start"); WebElement addresField = waitVisible(ADDRES_FIELD); addresField.sendKeys(addres); + logger.debug("fillAddres() end"); } //заполняет тему письма public void fillTopic(String topic) { + logger.debug("fillTopic() start"); WebElement topicField = waitVisible(TOPIC_FIELD); topicField.sendKeys(topic); + logger.debug("fillTopic() end"); } // заполняет тело письма public void fillMailText(String text) { + logger.debug("fillMailText() start"); WebElement mailText = waitVisible(MAIL_TEXT_FIELD); mailText.sendKeys(text); + logger.debug("fillMailText() end"); } //отправляет письмо public void sendMail() { + logger.debug("sendMail() start"); WebElement sendButton = waitVisible(SEND_BUTTON); sendButton.click(); + logger.debug("sendMail() end"); } // заходим в папку отправленные public void goToSentEmails() { + logger.debug("goToSentEmails() start"); WebElement sentEmailsButton = waitVisible(SENT_EMAILS_BUTTON); - sentEmailsButton.click(); + Actions builder = new Actions(getDriver()); + builder.moveToElement(sentEmailsButton) + .click() + .pause(500) + .build() + .perform(); + // sentEmailsButton.click(); + logger.debug("goToSentEmails() end"); } //заходим папку входящие public void goToInboxEmails() { + logger.debug("goToInboxEmails() start"); WebElement InboxEmailsButton = waitVisible(INBOX_EMAILS_BUTTON); InboxEmailsButton.click(); + logger.debug("goToInboxEmails() end"); } //заходим папку Черновики public void goToDraftEmails() { + logger.debug("goToDraftEmails() start"); waitVisible(DRAFT_FOLDER).click(); + logger.debug("goToDraftEmails() end"); } //заходим папку Удаленные public void goToTrashEmails() { + logger.debug("goToTrashEmails() start"); waitVisible(TRASH_FOLDER).click(); + logger.debug("goToTrashEmails() end"); } //проверяем есть ли письмо от указанного адреса public boolean isMailExist(String addres) { + logger.debug("isMailExist() start"); boolean result = false; try { String xpathString = E_PREFIX + addres + E_POSTFIX; + // waitStaleness(xpathString); WebElement email = waitVisible(xpathString); result = true; } catch (Exception e) { + logger.error("Error while checking if mail exists", e); e.printStackTrace(); result = false; } + logger.debug("isMailExist() end"); return result; } //закрываем диалоговое окно об отправке письма public void closeSentEmailDialog() { + logger.debug("closeSentEmailDialog() start"); WebElement closeDialogButton = waitVisible(CLOSE_DIALOG_BUTTON); closeDialogButton.click(); + logger.debug("closeSentEmailDialog() start"); } //удаление всех писем в текущей папке public void deleteAllLetters() { + logger.debug("deleteAllLetters() start"); WebElement selectALL = waitVisible(SELECT_ALL_BUTTON); selectALL.click(); WebElement deleteElement = waitVisible(DELETE_EMAILS_BUTTON); @@ -169,40 +211,51 @@ public void deleteAllLetters() { } waitVisible(NOTIFY_MESSAGE_TEXT); waitVisible(CLOSE_NOTIFY_MESSAGE).click(); + logger.debug("deleteAllLetters() end"); } // метод на проверку пустой папки public boolean emptyFolder() { + logger.debug("emptyFolder() check if folder is empty"); return waitVisible(EMTY_FOLDER_MESSAGE).isDisplayed(); } //возвращает текст ошибки "Не указан адрес получателя" public String getNoAddressErrorMessage() { + logger.debug("getNoAddressErrorMessage() start"); WebElement element = waitVisible(ERROR_MESSAGE); + logger.debug("getNoAddressErrorMessage() end"); return element.getText(); } //закрывает окно нового письма public void closeNewEmailDialog() { + logger.debug("closeNewEmailDialog() start"); waitVisible(CLOSE_NEW_EMAIL_DIALOG).click(); + logger.debug("closeNewEmailDialog() end"); } // нажимает кнопку "Отменить" в новом письме public void cancelEmail() { + logger.debug("cancelEmail() start"); waitVisible(CANCEL_EMAEL).click(); + logger.debug("cancelEmail() end"); } // сохраняет письмо в черновики public void saveDraftEmail() { + logger.debug("saveDraftEmail() start"); waitVisible(SAVE_DRAFT_EMAIL).click(); //ждем пока не появится сообщение "Сохранено в черновиках в 16:35" waitVisible(NOTIFY_MESSAGE_TEXT); //закрыть уведомление waitVisible(CLOSE_NOTIFY_MESSAGE).click(); + logger.debug("saveDraftEmail() end"); } // получает текст сообщения, что папка пуста public String getEmtyFolderMessage() { + logger.debug("getEmtyFolderMessage() returns message"); return waitVisible(EMTY_FOLDER_MESSAGE).getText(); } } diff --git a/src/main/java/by/academy/it/service/cloud/CloudService.java b/src/main/java/by/academy/it/service/cloud/CloudService.java new file mode 100644 index 0000000..61f30c1 --- /dev/null +++ b/src/main/java/by/academy/it/service/cloud/CloudService.java @@ -0,0 +1,86 @@ +package by.academy.it.service.cloud; + +import static by.academy.it.page.Constants.CLOUD_URL; + +import by.academy.it.framework.Browser; +import by.academy.it.page.cloud.CloudPage; +import by.academy.it.service.mail.LoginService; + +public class CloudService { + + private LoginService loginService; + private Browser browser; + private CloudPage cloudPage; + + public CloudService() { + loginService = new LoginService(); + browser = Browser.getInstance(); + cloudPage = new CloudPage(); + } + + public void enterCloud() { + loginService.doLogin(); + browser.open(CLOUD_URL); + } + + public void openCloud() { + browser.open(CLOUD_URL); + } + + public void createNewFolder(String name) { + cloudPage.createNewFolder(name); + } + + public boolean isFolderExist(String folderName) { + return cloudPage.isFolderExist(folderName); + } + + public boolean isFolderEmpty() { + return cloudPage.isFolderEmpty(); + } + + //закрываем рекламный диалог + public void closeDialog() { + cloudPage.closeDialog(); + } + + //удаляем папку + public void removeFolder(String name) { + cloudPage.removeFolder(name); + } + + // переходим в корневую папку + public void goToRootFolder() { + cloudPage.goToRootFolder(); + } + + // загрузить файл + public void uploadFile(String filePath) { + cloudPage.uploadFile(filePath); + } + + //проверяем, что файл загружен + public boolean isFileUploaded(String fileName) { + return cloudPage.isFileUploaded(fileName); + } + + // перетягивание файла в папку + public void moveFileToFolder(String folderName, String fileName) { + cloudPage.moveFileToFolder(folderName, fileName); + } + + // переходим в указанную папку + public void goToFolder(String nameFolder) { + cloudPage.goToFolder(nameFolder); + } + + //возвращает URL на расшаренный файл + public String getShareLink(String fileName) { + return cloudPage.getShareLink(fileName); + } + + public boolean isSharedLinkExist(String fileName, String sharedFileURL) { + browser.open(sharedFileURL); + return cloudPage.isSharedLinkExist(fileName); + } +} diff --git a/src/main/java/by/academy/it/service/mail/LoginService.java b/src/main/java/by/academy/it/service/mail/LoginService.java new file mode 100644 index 0000000..3afa8b7 --- /dev/null +++ b/src/main/java/by/academy/it/service/mail/LoginService.java @@ -0,0 +1,89 @@ +package by.academy.it.service.mail; + +import static by.academy.it.page.Constants.INVALID_LOGIN; +import static by.academy.it.page.Constants.INVALID_PASSWORD; +import static by.academy.it.page.Constants.LOGIN; +import static by.academy.it.page.Constants.LOGIN_URL; +import static by.academy.it.page.Constants.PASSWORD; + +import by.academy.it.framework.Browser; +import by.academy.it.model.User; +import by.academy.it.page.mail.LoginPage; + +public class LoginService { + + private Browser browser; + private LoginPage loginPage; + private User validUser; + private User invalidUser; + + public LoginService() { + browser = Browser.getInstance(); + loginPage = new LoginPage(); + validUser = new User(); + validUser.setLogin(LOGIN); + validUser.setPassword(PASSWORD); + invalidUser = new User(); + invalidUser.setLogin(LOGIN); + invalidUser.setPassword(PASSWORD); + } + + public User getValidUser() { + return validUser; + } + + public User getInvalidUser() { + return invalidUser; + } + + public void doLogin(User user) { + browser.open(LOGIN_URL); + loginPage.doLogin(user); + } + + //логинемся валидным юзером + public void doLogin() { + doLogin(validUser); + } + + public String getLoggedUserMail() { + return loginPage.getLoggedUserMail(); + } + + public void doLogout() { + loginPage.doLogout(); + } + + public void enterLogin(String login) { + browser.open(LOGIN_URL); + loginPage.enterLogin(login); + } + + public void enterInvaildLogin() { + enterLogin(INVALID_LOGIN); + } + + public void enterVaildLogin() { + enterLogin(LOGIN); + } + + public String getErrorMessage() { + return loginPage.getErrorLoginMessage(); + } + + public String getIncorrectLoginExpectedMessage() { + return "Такой аккаунт не зарегистрирован"; + } + + public String getIncorrectPasswordExpectedMessage() { + return "Неверный пароль, попробуйте ещё раз"; + } + + public void enterPassword(String password) { + loginPage.enterPassword(password); + } + + public void enterInvalidPassword() { + loginPage.enterPassword(INVALID_PASSWORD); + } +} diff --git a/src/main/java/by/academy/it/service/mail/MailService.java b/src/main/java/by/academy/it/service/mail/MailService.java new file mode 100644 index 0000000..d57f26d --- /dev/null +++ b/src/main/java/by/academy/it/service/mail/MailService.java @@ -0,0 +1,110 @@ +package by.academy.it.service.mail; + +import static by.academy.it.page.Constants.DRAFT_ADDRESS; +import static by.academy.it.page.Constants.EMPTY; +import static by.academy.it.page.Constants.LOGIN; +import static by.academy.it.page.Constants.TEXT; +import static by.academy.it.page.Constants.TOPIC; + +import by.academy.it.model.Letter; +import by.academy.it.page.mail.MailPage; + +public class MailService { + + private MailPage mailPage; + private Letter validLetter; + private Letter noSubjectNoBodyLetter; + private Letter draftLetter; + private Letter noAddressLetter; + + public MailService() { + mailPage = new MailPage(); + + validLetter = new Letter(); + validLetter.setAddress(LOGIN); + validLetter.setTopic(TOPIC); + validLetter.setMessage(TEXT); + + noSubjectNoBodyLetter = new Letter(); + noSubjectNoBodyLetter.setAddress(LOGIN); + noSubjectNoBodyLetter.setTopic(EMPTY); + noSubjectNoBodyLetter.setMessage(EMPTY); + + draftLetter = new Letter(); + draftLetter.setAddress(DRAFT_ADDRESS); + draftLetter.setTopic(EMPTY); + draftLetter.setMessage(EMPTY); + + noAddressLetter = new Letter(); + noAddressLetter.setAddress(EMPTY); + noAddressLetter.setTopic(TOPIC); + noAddressLetter.setMessage(TEXT); + } + + public void sendNoAddressNewMail() { + mailPage.sendNewMail(noAddressLetter); + } + + public void sendNewNoSubjectNoBodyMail() { + mailPage.sendNewMail(validLetter); + } + + public void sendNewValidMail() { + mailPage.sendNewMail(noSubjectNoBodyLetter); + } + + public void goToSentEmails() { + mailPage.goToSentEmails(); + } + + //проверяем есть ли письмо от указанного адреса + public boolean isMailExist(String addres) { + return mailPage.isMailExist(addres); + } + + public void deleteAllLetters() { + mailPage.deleteAllLetters(); + } + + public void goToInboxEmails() { + mailPage.goToInboxEmails(); + } + + public void closeNewEmailDialog() { + mailPage.closeNewEmailDialog(); + } + + //заходим папку Черновики + public void goToDraftEmails() { + mailPage.goToDraftEmails(); + } + + //заходим папку Удаленные + public void goToTrashEmails() { + mailPage.goToTrashEmails(); + } + + // создает и сохраняет черновик письма + public void createDraftMail() { + mailPage.createDraftMail(draftLetter.getAddress(), draftLetter.getTopic(), + draftLetter.getMessage()); + closeNewEmailDialog(); + } + + public String getEmtyFolderMessage() { + return mailPage.getEmtyFolderMessage(); + } + + public String getExpectedEmtyFolderMessage() { + return "В корзине пусто"; + } + + public String getNoAddressErrorMessage() { + return mailPage.getNoAddressErrorMessage(); + } + + public String getExpectedNoAddressErrorMessage() { + return "Не указан адрес получателя"; + } + +} diff --git a/src/main/java/by/academy/it/test/BaseTest.java b/src/main/java/by/academy/it/test/BaseTest.java index 3a1f840..ab9e273 100644 --- a/src/main/java/by/academy/it/test/BaseTest.java +++ b/src/main/java/by/academy/it/test/BaseTest.java @@ -1,5 +1,6 @@ package by.academy.it.test; +import by.academy.it.framework.Browser; import java.util.concurrent.TimeUnit; import org.openqa.selenium.UnexpectedAlertBehaviour; import org.openqa.selenium.WebDriver; @@ -11,31 +12,15 @@ public class BaseTest { - public static final String LOGIN = "kalacheva.tamara@bk.ru"; - public static final String PASSWORD = "&YPviFA1zpu1"; - public static final String INVALID_LOGIN = "kalachevaaaa.tamara@bk.ru"; - public static final String INVALID_PASSWORD = "&YPviFA1zpu1po"; - public static final String LOGIN_URL = "https://account.mail.ru/login"; - public static final String CLOUD_URL = "https://cloud.mail.ru"; - public static WebDriver driver = null; - - public WebDriver getDriver() { - return driver; - } + private Browser browser; @BeforeSuite(alwaysRun = true)//открывает браузер перед выполнением сценария suite public void setup() { - System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe"); - // from here: https://stackoverflow.com/questions/26772793/org-openqa-selenium-unhandledalertexception-unexpected-alert-open - DesiredCapabilities dc = new DesiredCapabilities(); - dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT); - driver = new ChromeDriver(dc); - driver.manage().window().maximize(); - driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); + browser = Browser.getInstance(); } @AfterSuite public void tearDown() { - getDriver().quit(); + browser.stopBrowser(); } } diff --git a/src/main/java/by/academy/it/test/CloudTest.java b/src/main/java/by/academy/it/test/CloudTest.java deleted file mode 100644 index e24b4bb..0000000 --- a/src/main/java/by/academy/it/test/CloudTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package by.academy.it.test; - -import by.academy.it.model.User; -import by.academy.it.page.CloudPage; -import by.academy.it.page.LoginPage; -import java.io.File; -import org.testng.Assert; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - -public class CloudTest extends BaseTest { - private CloudPage cloudPage; - private LoginPage loginPage; - private String folderName = "new_folder"; - private File file = new File("src/main/resources/HelloWorld.txt"); - - @BeforeTest - public void beforeTest() { - getDriver().get(LOGIN_URL); - cloudPage = new CloudPage(getDriver()); - loginPage = new LoginPage(getDriver()); - User user = new User(); - user.setLogin(LOGIN); - user.setPassword(PASSWORD); - loginPage.doLogin(user); - getDriver().get(CLOUD_URL); - } - - @Test(priority = 1) - public void newFolderTest() { - cloudPage.createNewFolder(folderName); - Assert.assertTrue(cloudPage.isFolderExist(folderName)); - } - - @Test(dependsOnMethods = {"newFolderTest", "dragAndDropTest", "shareLinkTest"}) - public void removeFolderTest() { - getDriver().get(CLOUD_URL); - cloudPage.closeDialog(); - cloudPage.removeFolder(folderName); - Assert.assertTrue(cloudPage.isFolderEmpty()); - } - - @Test(priority = 3) - public void uploadFileTest() { - cloudPage.goToRootFolder(); - cloudPage.uploadFile(file.getAbsolutePath()); - Assert.assertTrue(cloudPage.isFileUploaded(file.getName())); - } - - @Test(dependsOnMethods = {"newFolderTest", "uploadFileTest"}) - public void dragAndDropTest() { - cloudPage.goToRootFolder(); - cloudPage.moveFileToFolder(folderName, file.getName()); - cloudPage.goToFolder(folderName); - Assert.assertTrue(cloudPage.isFileUploaded(file.getName())); - } - - @Test(dependsOnMethods = {"dragAndDropTest"}) - public void shareLinkTest() { - String sharedFileURL = cloudPage.getShareLink(file.getName()); - driver.get(sharedFileURL); - Assert.assertTrue(cloudPage.isSharedLinkExist(file.getName())); - } -} diff --git a/src/main/java/by/academy/it/test/LoginTest.java b/src/main/java/by/academy/it/test/LoginTest.java deleted file mode 100644 index 44277bd..0000000 --- a/src/main/java/by/academy/it/test/LoginTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package by.academy.it.test; - -import by.academy.it.model.User; -import by.academy.it.page.LoginPage; -import org.testng.Assert; -import org.testng.annotations.Test; - -public class LoginTest extends BaseTest { - - @Test(priority = 1) - public void loginToMailTest() { - getDriver().get(LOGIN_URL); - LoginPage loginPage = new LoginPage(getDriver()); - User user = new User(); - user.setLogin(LOGIN); - user.setPassword(PASSWORD); - loginPage.doLogin(user); - Assert.assertEquals(loginPage.getLoggedUserMail(), LOGIN, - "Testing of logging with valid data is failed"); - loginPage.doLogout(); - } - - @Test(priority = 2) - public void negativeLoginToMailTest() { - getDriver().get("https://account.mail.ru/login"); - LoginPage loginPage = new LoginPage(getDriver()); - // проверяем неправильный логин - loginPage.enterLogin(INVALID_LOGIN); - Assert.assertEquals(loginPage.getErrorLoginMessage(), "Такой аккаунт не зарегистрирован", - "Invalid Error message"); - // проверяем неправильный пароль - loginPage.enterLogin(LOGIN); - loginPage.enterPassword(INVALID_PASSWORD); - Assert.assertEquals(loginPage.getErrorLoginMessage(), "Неверный пароль, попробуйте ещё раз", - "Invalid Error message"); - } -} diff --git a/src/main/java/by/academy/it/test/SendMailTest.java b/src/main/java/by/academy/it/test/SendMailTest.java deleted file mode 100644 index 142d158..0000000 --- a/src/main/java/by/academy/it/test/SendMailTest.java +++ /dev/null @@ -1,113 +0,0 @@ -package by.academy.it.test; - - -import by.academy.it.model.Letter; -import by.academy.it.model.User; -import by.academy.it.page.LoginPage; -import by.academy.it.page.MailPage; -import org.testng.Assert; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - -public class SendMailTest extends BaseTest { - - public static final String TOPIC = "test letter"; - public static final String TEXT = "Some message "; - public static final String EMPTY = ""; - public static final String DRAFT_ADDRESS = "draft@mail.ru"; - private LoginPage loginPage; - private MailPage mailPage; - - @BeforeTest - public void beforeTest() { - getDriver().get(LOGIN_URL); - loginPage = new LoginPage(getDriver()); - mailPage = new MailPage(getDriver()); - User user = new User(); - user.setLogin(LOGIN); - user.setPassword(PASSWORD); - loginPage.doLogin(user); - } - - @AfterTest - public void afterTest() { - // выходим из почты - loginPage.doLogout(); - } - - @Test(priority = 3) - //отправка письма на свой же адрес (сама себе) - public void sendMailTest() { - Letter letter = new Letter(); - letter.setAddress(LOGIN); - letter.setTopic(TOPIC); - letter.setMessage(TEXT); - mailPage.sendNewMail(letter); - //переходим в папку отправленные - mailPage.goToSentEmails(); - //проверям есть ли письмо с указанным адресом в текущей папке - Assert.assertTrue(mailPage.isMailExist(LOGIN), "Check mail exists in SENT folder"); - //удаляем все письма с текущей папки - mailPage.deleteAllLetters(); - //переходим папку входящие - mailPage.goToInboxEmails(); - // проверям есть ли письмо с указанным адресом в текущей папке - Assert.assertTrue(mailPage.isMailExist(LOGIN), "Check mail exists in INBOX folder"); - mailPage.deleteAllLetters(); - } - - @Test(priority = 4) - public void sendMainNoSubjectNoBodyTest() { - Letter letter = new Letter(); - letter.setAddress(LOGIN); - letter.setTopic(EMPTY); - letter.setMessage(EMPTY); - mailPage.sendNewMail(letter); - // заходим в папку отправленные - mailPage.goToSentEmails(); - //проверям есть ли письмо с указанным адресом в текущей папке(Отправленные) - Assert.assertTrue(mailPage.isMailExist(LOGIN), "Check mail exists in SENT folder"); - //удаляем все письма - mailPage.deleteAllLetters(); - //заходим в папку Входящие - mailPage.goToInboxEmails(); - //проверям есть ли письмо с указанным адресом в текущей папке(Входящие) - Assert.assertTrue(mailPage.isMailExist(LOGIN), "Check mail exists in INBOX folder"); - mailPage.deleteAllLetters(); - } - - @Test(priority = 5) - public void sendMailNoAddressTest() { - //отправляем письмо без указания адреса - Letter letter = new Letter(); - letter.setAddress(EMPTY); - letter.setTopic(TOPIC); - letter.setMessage(TEXT); - mailPage.sendNewMail(letter); - //проверяем что появилось сообщение об ошибке(Не указан адрес получателя) - Assert.assertEquals(mailPage.getNoAddressErrorMessage(), "Не указан адрес получателя"); - mailPage.closeNewEmailDialog(); - } - - @Test(priority = 6) - public void draftMailTest() { - //создаем черновик письма и сохрняем его - mailPage.createDraftMail(DRAFT_ADDRESS, TOPIC, TEXT); - mailPage.closeNewEmailDialog(); - //заходим в папку Черновики - mailPage.goToDraftEmails(); - // проверяем есть ли письмо с таким адресом - Assert.assertTrue(mailPage.isMailExist(DRAFT_ADDRESS), "Check mail exists in DRAFTS folder"); - //удаляем все письма из текущей папки - mailPage.deleteAllLetters(); - //захододим в паку Удаленные (Корзина) - mailPage.goToTrashEmails(); - //проверяем есть ли письмо с таким адресом - Assert.assertTrue(mailPage.isMailExist(LOGIN), "Check mail exists in TRASH folder"); - //удаляем все письма из папки, если есть письмо с таким адресом - mailPage.deleteAllLetters(); - //проверяем что текст сообщения = "В корзине пусто" - Assert.assertEquals(mailPage.getEmtyFolderMessage(), "В корзине пусто"); - } -} diff --git a/src/main/java/by/academy/it/test/cloud/CloudTest.java b/src/main/java/by/academy/it/test/cloud/CloudTest.java new file mode 100644 index 0000000..b989a28 --- /dev/null +++ b/src/main/java/by/academy/it/test/cloud/CloudTest.java @@ -0,0 +1,57 @@ +package by.academy.it.test.cloud; + +import by.academy.it.framework.Browser; +import by.academy.it.service.cloud.CloudService; +import by.academy.it.test.BaseTest; +import java.io.File; +import org.testng.Assert; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +public class CloudTest extends BaseTest { + + private CloudService cloudService = new CloudService(); + + private String folderName = "new_folder"; + private File file = new File("src/main/resources/HelloWorld.txt"); + + @BeforeTest + public void beforeTest() { + cloudService.enterCloud(); + } + + @Test(priority = 1) + public void newFolderTest() { + cloudService.createNewFolder(folderName); + Assert.assertTrue(cloudService.isFolderExist(folderName)); + } + + @Test(dependsOnMethods = {"newFolderTest", "dragAndDropTest", "shareLinkTest"}) + public void removeFolderTest() { + cloudService.openCloud(); + cloudService.closeDialog(); + cloudService.removeFolder(folderName); + Assert.assertTrue(cloudService.isFolderEmpty()); + } + + @Test(priority = 3) + public void uploadFileTest() { + cloudService.goToRootFolder(); + cloudService.uploadFile(file.getAbsolutePath()); + Assert.assertTrue(cloudService.isFileUploaded(file.getName())); + } + + @Test(dependsOnMethods = {"newFolderTest", "uploadFileTest"}) + public void dragAndDropTest() { + cloudService.goToRootFolder(); + cloudService.moveFileToFolder(folderName, file.getName()); + cloudService.goToFolder(folderName); + Assert.assertTrue(cloudService.isFileUploaded(file.getName())); + } + + @Test(dependsOnMethods = {"dragAndDropTest"}) + public void shareLinkTest() { + String sharedFileURL = cloudService.getShareLink(file.getName()); + Assert.assertTrue(cloudService.isSharedLinkExist(file.getName(), sharedFileURL)); + } +} diff --git a/src/main/java/by/academy/it/test/mail/LoginTest.java b/src/main/java/by/academy/it/test/mail/LoginTest.java new file mode 100644 index 0000000..8d6aea1 --- /dev/null +++ b/src/main/java/by/academy/it/test/mail/LoginTest.java @@ -0,0 +1,39 @@ +package by.academy.it.test.mail; + +import by.academy.it.service.mail.LoginService; +import by.academy.it.test.BaseTest; +import org.testng.Assert; +import org.testng.annotations.Test; + +public class LoginTest extends BaseTest { + + private LoginService loginService = new LoginService(); + + @Test(priority = 1) + public void loginToMailTest() { + loginService.doLogin(); + Assert.assertEquals(loginService.getLoggedUserMail(), loginService.getValidUser().getLogin(), + "Testing of logging with valid data failed"); + loginService.doLogout(); + } + + @Test(priority = 2) + public void negativeLoginToMailTest() { + // проверяем неправильный логин + loginService.enterInvaildLogin(); + Assert.assertEquals(loginService.getErrorMessage(), + loginService.getIncorrectLoginExpectedMessage(), + "Invalid Error message"); + } + + @Test(dependsOnMethods = {"negativeLoginToMailTest"}) + public void negativePasswordTest() { + //Вводим правильный логин + loginService.enterVaildLogin(); + // проверяем неправильный пароль + loginService.enterInvalidPassword(); + Assert.assertEquals(loginService.getErrorMessage(), + loginService.getIncorrectPasswordExpectedMessage(), + "Invalid Error message"); + } +} diff --git a/src/main/java/by/academy/it/test/mail/SendMailTest.java b/src/main/java/by/academy/it/test/mail/SendMailTest.java new file mode 100644 index 0000000..9fa2d30 --- /dev/null +++ b/src/main/java/by/academy/it/test/mail/SendMailTest.java @@ -0,0 +1,94 @@ +package by.academy.it.test.mail; + + +import static by.academy.it.page.Constants.DRAFT_ADDRESS; +import static by.academy.it.page.Constants.LOGIN; + +import by.academy.it.service.mail.LoginService; +import by.academy.it.service.mail.MailService; +import by.academy.it.test.BaseTest; +import org.testng.Assert; +import org.testng.annotations.AfterTest; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +public class SendMailTest extends BaseTest { + + private LoginService loginService = new LoginService(); + private MailService mailService = new MailService(); + + @BeforeTest + public void beforeTest() { + loginService.doLogin(); + } + + @AfterTest + public void afterTest() { + // выходим из почты + loginService.doLogout(); + } + + @Test(priority = 3) + //отправка письма на свой же адрес (сама себе) + public void sendMailTest() { + mailService.sendNewValidMail(); + //переходим в папку отправленные + mailService.goToSentEmails(); + //проверям есть ли письмо с указанным адресом в текущей папке + Assert.assertTrue(mailService.isMailExist(LOGIN), "Check mail exists in SENT folder"); + //удаляем все письма с текущей папки + mailService.deleteAllLetters(); + //переходим папку входящие + mailService.goToInboxEmails(); + // проверям есть ли письмо с указанным адресом в текущей папке + Assert.assertTrue(mailService.isMailExist(LOGIN), "Check mail exists in INBOX folder"); + mailService.deleteAllLetters(); + } + + @Test(priority = 4) + public void sendMainNoSubjectNoBodyTest() { + mailService.sendNewNoSubjectNoBodyMail(); + // заходим в папку отправленные + mailService.goToSentEmails(); + //проверям есть ли письмо с указанным адресом в текущей папке(Отправленные) + Assert.assertTrue(mailService.isMailExist(LOGIN), "Check mail exists in SENT folder"); + //удаляем все письма + mailService.deleteAllLetters(); + //заходим в папку Входящие + mailService.goToInboxEmails(); + //проверям есть ли письмо с указанным адресом в текущей папке(Входящие) + Assert.assertTrue(mailService.isMailExist(LOGIN), "Check mail exists in INBOX folder"); + mailService.deleteAllLetters(); + } + + @Test(priority = 5) + public void sendMailNoAddressTest() { + //отправляем письмо без указания адреса + mailService.sendNoAddressNewMail(); + //проверяем что появилось сообщение об ошибке(Не указан адрес получателя) + Assert.assertEquals(mailService.getNoAddressErrorMessage(), + mailService.getExpectedNoAddressErrorMessage()); + mailService.closeNewEmailDialog(); + } + + @Test(priority = 6) + public void draftMailTest() { + //создаем черновик письма и сохрняем его + mailService.createDraftMail(); + //заходим в папку Черновики + mailService.goToDraftEmails(); + // проверяем есть ли письмо с таким адресом + Assert.assertTrue(mailService.isMailExist(DRAFT_ADDRESS), "Check mail exists in DRAFTS folder"); + //удаляем все письма из текущей папки + mailService.deleteAllLetters(); + //захододим в паку Удаленные (Корзина) + mailService.goToTrashEmails(); + //проверяем есть ли письмо с таким адресом + Assert.assertTrue(mailService.isMailExist(LOGIN), "Check mail exists in TRASH folder"); + //удаляем все письма из папки, если есть письмо с таким адресом + mailService.deleteAllLetters(); + //проверяем что текст сообщения = "В корзине пусто" + Assert.assertEquals(mailService.getEmtyFolderMessage(), + mailService.getExpectedEmtyFolderMessage()); + } +} diff --git a/src/main/resources/Log4j.properties b/src/main/resources/Log4j.properties new file mode 100644 index 0000000..cdfafc9 --- /dev/null +++ b/src/main/resources/Log4j.properties @@ -0,0 +1,18 @@ +# Use two appenders, one to log to console, another to log to a file +#Set level +log4j.rootCategory=info, console, file + +# Appender which writes to console +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%d{MM-dd-yyyy HH:mm:ss} %F %-5p [%t] %c{2} %L - %m%n + +# Appender which writes to a file +log4j.appender.file=org.apache.log4j.RollingFileAppender +log4j.appender.file.File=log4j-application.log + +# Defining maximum size of a log file +log4j.appender.file.MaxFileSize=5mb +log4j.appender.file.MaxBackupIndex=5 +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %5p [%t] %c{1}:%L - %m%n \ No newline at end of file diff --git a/src/main/resources/cloud/suite.xml b/src/main/resources/cloud/suite.xml index 5559f79..b35f3cb 100644 --- a/src/main/resources/cloud/suite.xml +++ b/src/main/resources/cloud/suite.xml @@ -4,7 +4,7 @@ - + diff --git a/src/main/resources/mail/suite.xml b/src/main/resources/mail/suite.xml index 8340ce2..1cf2680 100644 --- a/src/main/resources/mail/suite.xml +++ b/src/main/resources/mail/suite.xml @@ -4,12 +4,12 @@ - + - + From 4b92995839d2fe4d82b8da8a94c8cdf34da4d875 Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Sun, 16 Feb 2020 12:19:39 +0300 Subject: [PATCH 12/13] WD Framework part THREE (checkstyle update) --- src/main/java/by/academy/it/framework/Browser.java | 2 +- src/main/java/by/academy/it/framework/Log.java | 5 ++--- .../java/by/academy/it/framework/TestingListener.java | 4 +++- src/main/java/by/academy/it/model/Letter.java | 1 + src/main/java/by/academy/it/page/BasePage.java | 7 ------- src/main/java/by/academy/it/page/Constants.java | 1 + src/main/java/by/academy/it/page/mail/LoginPage.java | 1 - src/main/java/by/academy/it/page/mail/MailPage.java | 5 ++--- src/main/java/by/academy/it/runner/GlobalRunner.java | 1 - src/main/java/by/academy/it/test/BaseTest.java | 8 +------- src/main/java/by/academy/it/test/cloud/CloudTest.java | 1 - 11 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/main/java/by/academy/it/framework/Browser.java b/src/main/java/by/academy/it/framework/Browser.java index 3746446..2eabd81 100644 --- a/src/main/java/by/academy/it/framework/Browser.java +++ b/src/main/java/by/academy/it/framework/Browser.java @@ -82,7 +82,7 @@ public void doRightMouseClick(String xPath) { builder.contextClick(element).build().perform(); } - //ждет пока не произойдет StaleElementReferenceException у элемента + //ждет пока не произойдет StaleElementReferenceException у элемента (ждет пока элемент не удалиться со странички Жаваскриптом и не будет добавлен на нее снова) public void waitStaleness(String xPath) { wait.until(ExpectedConditions.stalenessOf(driver.findElement(By.xpath(xPath)))); } diff --git a/src/main/java/by/academy/it/framework/Log.java b/src/main/java/by/academy/it/framework/Log.java index c262854..ab5a04a 100644 --- a/src/main/java/by/academy/it/framework/Log.java +++ b/src/main/java/by/academy/it/framework/Log.java @@ -6,12 +6,12 @@ // Класс написан просто для примера. Целесообразнее вызывать логгер и его методы напрямую в классе. public class Log { + private static final Logger logger = Logger.getLogger("by.academy.it"); + static { PropertyConfigurator.configureAndWatch("log4j/log4j.properties"); } - private static final Logger logger = Logger.getLogger("by.academy.it"); - public static void info(Logger log, Object message) { log.info(message); } @@ -37,7 +37,6 @@ public static void error(Object message) { } - public static void debugStart(Logger log, Object... params) { String message = getMethodName(27) + "()"; if (params != null && params.length > 0) { diff --git a/src/main/java/by/academy/it/framework/TestingListener.java b/src/main/java/by/academy/it/framework/TestingListener.java index f001c8c..795cb37 100644 --- a/src/main/java/by/academy/it/framework/TestingListener.java +++ b/src/main/java/by/academy/it/framework/TestingListener.java @@ -5,6 +5,7 @@ import org.testng.ITestResult; public class TestingListener implements ITestListener { + private long methodStartTime; @Override @@ -46,7 +47,8 @@ public void onTestSkipped(ITestResult iTestResult) { @Override public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) { - Log.info("[TEST METHOD FAILED WITHIN SUCCESS PERCENTAGE]" + iTestResult.getName()+ " SPENT TIME(ms): " + Log.info("[TEST METHOD FAILED WITHIN SUCCESS PERCENTAGE]" + iTestResult.getName() + + " SPENT TIME(ms): " + (iTestResult.getEndMillis() - methodStartTime)); } } diff --git a/src/main/java/by/academy/it/model/Letter.java b/src/main/java/by/academy/it/model/Letter.java index 2b5d1df..2223f96 100644 --- a/src/main/java/by/academy/it/model/Letter.java +++ b/src/main/java/by/academy/it/model/Letter.java @@ -1,6 +1,7 @@ package by.academy.it.model; public class Letter { + private String address; private String topic; private String message; diff --git a/src/main/java/by/academy/it/page/BasePage.java b/src/main/java/by/academy/it/page/BasePage.java index cc138ab..06f8235 100644 --- a/src/main/java/by/academy/it/page/BasePage.java +++ b/src/main/java/by/academy/it/page/BasePage.java @@ -2,15 +2,8 @@ import by.academy.it.framework.Browser; import org.apache.log4j.Logger; -import org.openqa.selenium.By; -import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; -import org.openqa.selenium.support.ui.ExpectedCondition; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.Wait; -import org.openqa.selenium.support.ui.WebDriverWait; public class BasePage { diff --git a/src/main/java/by/academy/it/page/Constants.java b/src/main/java/by/academy/it/page/Constants.java index 0f27a40..a176bd8 100644 --- a/src/main/java/by/academy/it/page/Constants.java +++ b/src/main/java/by/academy/it/page/Constants.java @@ -1,6 +1,7 @@ package by.academy.it.page; public class Constants { + public static final String LOGIN = "kalacheva.tamara@bk.ru"; public static final String PASSWORD = "&YPviFA1zpu1"; public static final String INVALID_LOGIN = "kalachevaaaa.tamara@bk.ru"; diff --git a/src/main/java/by/academy/it/page/mail/LoginPage.java b/src/main/java/by/academy/it/page/mail/LoginPage.java index 9381d45..1a201d9 100644 --- a/src/main/java/by/academy/it/page/mail/LoginPage.java +++ b/src/main/java/by/academy/it/page/mail/LoginPage.java @@ -4,7 +4,6 @@ import by.academy.it.page.BasePage; import org.apache.log4j.Logger; import org.openqa.selenium.Keys; -import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; public class LoginPage extends BasePage { diff --git a/src/main/java/by/academy/it/page/mail/MailPage.java b/src/main/java/by/academy/it/page/mail/MailPage.java index f279a49..f1792f7 100644 --- a/src/main/java/by/academy/it/page/mail/MailPage.java +++ b/src/main/java/by/academy/it/page/mail/MailPage.java @@ -3,7 +3,6 @@ import by.academy.it.model.Letter; import by.academy.it.page.BasePage; import org.apache.log4j.Logger; -import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; @@ -140,7 +139,7 @@ public void goToSentEmails() { .pause(500) .build() .perform(); - // sentEmailsButton.click(); + // sentEmailsButton.click(); logger.debug("goToSentEmails() end"); } @@ -172,7 +171,7 @@ public boolean isMailExist(String addres) { boolean result = false; try { String xpathString = E_PREFIX + addres + E_POSTFIX; - // waitStaleness(xpathString); + // waitStaleness(xpathString); WebElement email = waitVisible(xpathString); result = true; } catch (Exception e) { diff --git a/src/main/java/by/academy/it/runner/GlobalRunner.java b/src/main/java/by/academy/it/runner/GlobalRunner.java index a63de93..0b22b1a 100644 --- a/src/main/java/by/academy/it/runner/GlobalRunner.java +++ b/src/main/java/by/academy/it/runner/GlobalRunner.java @@ -1,6 +1,5 @@ package by.academy.it.runner; -import java.util.Arrays; import java.util.List; import org.testng.TestNG; import org.testng.collections.Lists; diff --git a/src/main/java/by/academy/it/test/BaseTest.java b/src/main/java/by/academy/it/test/BaseTest.java index ab9e273..eb00544 100644 --- a/src/main/java/by/academy/it/test/BaseTest.java +++ b/src/main/java/by/academy/it/test/BaseTest.java @@ -1,18 +1,12 @@ package by.academy.it.test; import by.academy.it.framework.Browser; -import java.util.concurrent.TimeUnit; -import org.openqa.selenium.UnexpectedAlertBehaviour; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.remote.CapabilityType; -import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; public class BaseTest { - private Browser browser; + private Browser browser; @BeforeSuite(alwaysRun = true)//открывает браузер перед выполнением сценария suite public void setup() { diff --git a/src/main/java/by/academy/it/test/cloud/CloudTest.java b/src/main/java/by/academy/it/test/cloud/CloudTest.java index b989a28..6244519 100644 --- a/src/main/java/by/academy/it/test/cloud/CloudTest.java +++ b/src/main/java/by/academy/it/test/cloud/CloudTest.java @@ -1,6 +1,5 @@ package by.academy.it.test.cloud; -import by.academy.it.framework.Browser; import by.academy.it.service.cloud.CloudService; import by.academy.it.test.BaseTest; import java.io.File; From 978f979a027470c378b628b937b2acfa73cda997 Mon Sep 17 00:00:00 2001 From: Tamara Kalachova Date: Sun, 16 Feb 2020 16:41:03 +0300 Subject: [PATCH 13/13] WD Framework part THREE (comments update) --- .../java/by/academy/it/framework/Browser.java | 16 ++++++++++++++-- .../java/by/academy/it/page/cloud/CloudPage.java | 4 ++-- .../by/academy/it/service/mail/LoginService.java | 6 ++++-- .../by/academy/it/service/mail/MailService.java | 5 ++--- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/java/by/academy/it/framework/Browser.java b/src/main/java/by/academy/it/framework/Browser.java index 2eabd81..bd9bc40 100644 --- a/src/main/java/by/academy/it/framework/Browser.java +++ b/src/main/java/by/academy/it/framework/Browser.java @@ -16,25 +16,34 @@ import org.openqa.selenium.support.ui.Wait; import org.openqa.selenium.support.ui.WebDriverWait; +// класс отвечающий за настройку веб-дрфйвера public class Browser implements WrapsDriver { + //поле для хранения экземпляра Browser класса private static Browser instance; private static WebDriver driver; private static Wait wait; + // приватный конструктор, чтобы реализовать синглтон и не позволить создавать new Btowser() вне этого класса + //По примеру Степана private Browser() { System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe"); // from here: https://stackoverflow.com/questions/26772793/org-openqa-selenium-unhandledalertexception-unexpected-alert-open + // ПОзволяет настроить поведение драйвера. В нашем случае он нажимает на кнопку "ПРИНЯТЬ" + // во всех АЛЕРТАХ которые будут показываться браузером DesiredCapabilities dc = new DesiredCapabilities(); dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT); driver = new ChromeDriver(dc); + // разворачиваем окно на весь экран driver.manage().window().maximize(); + // неявное ожидание браузера в 30 секунд driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); + // Создаем и настраиваем объект для ЯВНЫХ ожиданий. Ждет 10 секунд, опрашивая ДОМ каздые 0.5 секунд wait = new WebDriverWait(driver, 10, 500) .withMessage("Element was not found in X seconds"); - } + //Метод, который надо вызывать вместо new Browser(), чтобы получить экземпляр синглтора public static Browser getInstance() { if (instance == null || driver == null) { instance = new Browser(); @@ -43,6 +52,7 @@ public static Browser getInstance() { } @Override + //Единственный метод интерфейса WrapsDriver который нужно реализовать (взято из примера Степана) public WebDriver getWrappedDriver() { return driver; } @@ -105,11 +115,13 @@ public Boolean apply(WebDriver driver) { // Ждет пока указанный элемент не появится на странице и не станет видимым (опрос элемента происходит в соответствии с настройками wait) public WebElement waitVisible(String xpathLocator) { + //Ждем пока элемент не появится на странице (presenceOfElementLocated). wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpathLocator))); + //Ждем пока элемент не станет видимым на странице. WebElement el = wait .until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathLocator))); + //Этот метод - единственное место через готорое мы обращаеся к элементам страницы. поэтому подсвечиваем только тут. el = highlightElement(el); return el; } - } diff --git a/src/main/java/by/academy/it/page/cloud/CloudPage.java b/src/main/java/by/academy/it/page/cloud/CloudPage.java index d7485e5..d170669 100644 --- a/src/main/java/by/academy/it/page/cloud/CloudPage.java +++ b/src/main/java/by/academy/it/page/cloud/CloudPage.java @@ -51,7 +51,7 @@ public CloudPage() { //создаем папку в облаке public void createNewFolder(String name) { - Log.debugStart(logger, name); + logger.debug("createNewFolder()" + name +"start"); waitVisible(CREATE).click(); waitVisible(NEW_FOLDER).click(); @@ -60,7 +60,7 @@ public void createNewFolder(String name) { logger.debug("PREFIX " + NEW_FOLDER_BREADCRUMB_PREFIX); waitVisible(NEW_FOLDER_BREADCRUMB_PREFIX + name + NEW_FOLDER_BREADCRUMB_POSTFIX); - Log.debugEnd(logger); + logger.debug("createNewFolder()" + name +"end"); } //проверяем, что папка создана diff --git a/src/main/java/by/academy/it/service/mail/LoginService.java b/src/main/java/by/academy/it/service/mail/LoginService.java index 3afa8b7..32abb70 100644 --- a/src/main/java/by/academy/it/service/mail/LoginService.java +++ b/src/main/java/by/academy/it/service/mail/LoginService.java @@ -24,8 +24,8 @@ public LoginService() { validUser.setLogin(LOGIN); validUser.setPassword(PASSWORD); invalidUser = new User(); - invalidUser.setLogin(LOGIN); - invalidUser.setPassword(PASSWORD); + invalidUser.setLogin(INVALID_LOGIN); + invalidUser.setPassword(INVALID_PASSWORD); } public User getValidUser() { @@ -37,7 +37,9 @@ public User getInvalidUser() { } public void doLogin(User user) { + //Браузером открываем страницу на которой можно залогиниться browser.open(LOGIN_URL); + // Делегируем операцию Логина объекту loginPage loginPage.doLogin(user); } diff --git a/src/main/java/by/academy/it/service/mail/MailService.java b/src/main/java/by/academy/it/service/mail/MailService.java index d57f26d..695fe56 100644 --- a/src/main/java/by/academy/it/service/mail/MailService.java +++ b/src/main/java/by/academy/it/service/mail/MailService.java @@ -46,11 +46,11 @@ public void sendNoAddressNewMail() { } public void sendNewNoSubjectNoBodyMail() { - mailPage.sendNewMail(validLetter); + mailPage.sendNewMail(noSubjectNoBodyLetter); } public void sendNewValidMail() { - mailPage.sendNewMail(noSubjectNoBodyLetter); + mailPage.sendNewMail(validLetter); } public void goToSentEmails() { @@ -106,5 +106,4 @@ public String getNoAddressErrorMessage() { public String getExpectedNoAddressErrorMessage() { return "Не указан адрес получателя"; } - }