yashaka

Untitled

Feb 4th, 2017
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.69 KB | None | 0 0
  1. public class NewEmailTest {
  2.  
  3.     GmailPage page = new GmailPage();
  4.  
  5.     @BeforeClass
  6.     public static void setup() {
  7.         Configuration.browser = System.getProperty("driver.browser");
  8.     }
  9.  
  10.     @Before
  11.     public void SignIn() {
  12.         open("http://gmail.com");
  13.         $("#Email").setValue(page.login).pressEnter(); // почему это ты создал пейджу для страници инбокса но не создал для страницы логина? )
  14.         $("#Passwd").setValue(page.password).pressEnter();
  15.         page.newEmail.shouldBe(visible);
  16.  
  17.         // во вторых, зачем тут этот @Before вообще?
  18.         почему это не часть теста? :)
  19.     }
  20.  
  21.     @Test
  22.     public void composeNewEmail() {
  23.         page.newEmail.click();  // идея пейдж обджектов - инкапсулировать детали технические... почему бы их не инкапсулировать до уровня "действий пользователя" а не элементов над которыми потом еще и клики нужно заморачиваться делать?
  24.         // почему не просто page.composeNewEmail(); ?
  25.         $(By.name("to")).setValue(page.contactEmail); // снова, что за микс вообще? почему что то ты вынес в пейдж обджект а что то напрямую используешь? забыл домашку по пейджобджектам?
  26.         $(By.name("subjectbox")).setValue(page.emailSubject);
  27.         page.sendEmail();
  28.         page.assertEmailSent();
  29.         page.searchForEmailBySubject();
  30.         page.assertSearchSucceed(); // зачем эта проверка вообще? сьорч саксид это когда реально оно нашло то что нужно, а не что какой то там элемент пропал... как минимум - имя не говорит всю правду... это плохо... имена должны точно отображать то что делают...
  31.         page.ensureOnlyOneSearchResult();
  32.         page.goToSentEmailFolder();
  33.         page.ensureEmailExistInSentEmailFolder(); // почему это этот метод привязан к сент фолдер? а разве если бы мы были не в сент фолдер - его нельзя было использовать? почитай еще раз в FAQ о нейминг конвеншенах... имя всегда должно релеватно отображать то что делает его код...
  34.     }
  35. }
  36.  
  37.  
  38. public class GmailPage {
  39.  
  40.     public String login = "[email protected]";
  41.     // c какой стати это креншиалы стали частью пейджа? а если ты захочешь в тесте под другим юзером залогиниться? что тогда делать?
  42.     public String password = "automician2";
  43.     public String contactEmail = "[email protected]";
  44.     public String emailSubject = "hey";
  45.     // тестовые данные - это часть тест кейса. Почему это пейджобджект начал отвечать за тестовые данные? Он разве тест кейс?
  46.  
  47.     public SelenideElement newEmail = $(byText("COMPOSE"));
  48.  
  49.     public void sendEmail() {
  50.         $(byText("Send")).click();
  51.     }
  52.  
  53.     public void assertEmailSent() { // это не асерт имейл сент, потому что ты не все проверил то что идентифицирует что мейл был отослан... это просто assertEmailSentMessage()
  54.         $(byText("View message")).shouldBe(visible);
  55.     }
  56.  
  57.     public void searchForEmailBySubject() {
  58.         $(By.name("q")).setValue("subject:" + emailSubject).pressEnter();
  59.     }
  60.  
  61.     public void assertSearchSucceed() {
  62.         $(byText("search options")).shouldNotBe(visible);
  63.     }
  64.  
  65.     public void ensureOnlyOneSearchResult() {
  66.         $$(byText(emailSubject)).filter(visible).shouldHave(size(1));
  67.         // в тесте там где ты после сьорча делаешь проверку -  такой проверки мало... лучше проверить сразу что там только один текст... как в селениде...
  68.         // не shouldHave(size()).first().shouldHave(text(...)) а сразу shouldHave(textx(...))
  69.     }
  70.  
  71.     public void goToSentEmailFolder() {
  72.         $(byText("Sent Mail")).click();
  73.     }
  74.  
  75.     public void ensureEmailExistInSentEmailFolder() {
  76.         $(byText(emailSubject)).exists();
  77.     }
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment