Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class NewEmailTest {
- GmailPage page = new GmailPage();
- @BeforeClass
- public static void setup() {
- Configuration.browser = System.getProperty("driver.browser");
- }
- @Before
- public void SignIn() {
- open("http://gmail.com");
- $("#Email").setValue(page.login).pressEnter(); // почему это ты создал пейджу для страници инбокса но не создал для страницы логина? )
- $("#Passwd").setValue(page.password).pressEnter();
- page.newEmail.shouldBe(visible);
- // во вторых, зачем тут этот @Before вообще?
- почему это не часть теста? :)
- }
- @Test
- public void composeNewEmail() {
- page.newEmail.click(); // идея пейдж обджектов - инкапсулировать детали технические... почему бы их не инкапсулировать до уровня "действий пользователя" а не элементов над которыми потом еще и клики нужно заморачиваться делать?
- // почему не просто page.composeNewEmail(); ?
- $(By.name("to")).setValue(page.contactEmail); // снова, что за микс вообще? почему что то ты вынес в пейдж обджект а что то напрямую используешь? забыл домашку по пейджобджектам?
- $(By.name("subjectbox")).setValue(page.emailSubject);
- page.sendEmail();
- page.assertEmailSent();
- page.searchForEmailBySubject();
- page.assertSearchSucceed(); // зачем эта проверка вообще? сьорч саксид это когда реально оно нашло то что нужно, а не что какой то там элемент пропал... как минимум - имя не говорит всю правду... это плохо... имена должны точно отображать то что делают...
- page.ensureOnlyOneSearchResult();
- page.goToSentEmailFolder();
- page.ensureEmailExistInSentEmailFolder(); // почему это этот метод привязан к сент фолдер? а разве если бы мы были не в сент фолдер - его нельзя было использовать? почитай еще раз в FAQ о нейминг конвеншенах... имя всегда должно релеватно отображать то что делает его код...
- }
- }
- public class GmailPage {
- // c какой стати это креншиалы стали частью пейджа? а если ты захочешь в тесте под другим юзером залогиниться? что тогда делать?
- public String password = "automician2";
- public String emailSubject = "hey";
- // тестовые данные - это часть тест кейса. Почему это пейджобджект начал отвечать за тестовые данные? Он разве тест кейс?
- public SelenideElement newEmail = $(byText("COMPOSE"));
- public void sendEmail() {
- $(byText("Send")).click();
- }
- public void assertEmailSent() { // это не асерт имейл сент, потому что ты не все проверил то что идентифицирует что мейл был отослан... это просто assertEmailSentMessage()
- $(byText("View message")).shouldBe(visible);
- }
- public void searchForEmailBySubject() {
- $(By.name("q")).setValue("subject:" + emailSubject).pressEnter();
- }
- public void assertSearchSucceed() {
- $(byText("search options")).shouldNotBe(visible);
- }
- public void ensureOnlyOneSearchResult() {
- $$(byText(emailSubject)).filter(visible).shouldHave(size(1));
- // в тесте там где ты после сьорча делаешь проверку - такой проверки мало... лучше проверить сразу что там только один текст... как в селениде...
- // не shouldHave(size()).first().shouldHave(text(...)) а сразу shouldHave(textx(...))
- }
- public void goToSentEmailFolder() {
- $(byText("Sent Mail")).click();
- }
- public void ensureEmailExistInSentEmailFolder() {
- $(byText(emailSubject)).exists();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment