Code Monkey home page Code Monkey logo

auto-testing's People

Contributors

aosandy avatar

Watchers

 avatar

auto-testing's Issues

Ревью

Я в тамтам https://tt.me/riinj

Увеличивай проект! :)

Перед выполнением действий с элементами необходимо проверить, что они есть на странице
С помощью селенида это можно сделать так, например $(ELEM).shoudBe(visible.because("Нет элемента")).click()

$(LOGIN_BUTTON).click();


Сейчас нигде не проверяется видимость элементов, с которыми мы взаимодействуем. Как проверить видимость элемента понятно, а вдруг страница вообще не прогрузилась?? Как мы это поймем? Предлагаю изучить паттерн LoadableComponent


Я бы не доверяла этим ребятам, а ты?

private final By PROFILE_NAME = By.xpath("//*[@id=\"hook_Block_Navigation\"]/div/div/div[1]/a/div");
private final By SIDE_BAR = By.xpath("//*[@id=\"hook_Block_Navigation\"]/div/div");


Нейминг неочевидный, что это за элементы - остается догадываться по id в локаторе

private final By SIDE_BAR = By.xpath("//*[@id=\"hook_Block_Navigation\"]/div/div");
private final By SIDE_BAR_2 = By.xpath("//*[@id=\"hook_Block_LeftColumnTopCard\"]");
private final By SIDE_BAR_3 = By.xpath("//*[@id=\"hook_Block_LeftColumnThirdMenuSection\"]");


Сейчас все тесты в одном классе, возможно, из-за того, что у них общее предусловие? Я бы разделила тесты по логическим группам на классы (мы кстати придерживаемся стиля один тест = один класс, хотя сейчас тесты маленькие и в этом нет смысла, можно сразу привыкать к такому стилю, так как на самом деле тесты должны быть независимыми и чем дальше, тем сложнее они становятся)
Так вот, чтобы у тестов было это общее предусловие и общее завершение (переход по ссылке на одноклассники и завершение сессии после), стоит использовать базовый тестовый класс и наследовать тесты от него

@AfterAll
static void afterAll() {
Selenide.closeWindow();
}


Проверки стоит делать через Assertions, например, asserEquals()

profilePage.getProfileName().shouldHave(text(PROFILE_NAME));


У селенида есть метод $$ для поиска нескольких элементов, но всю работу с локаторами мы выносим в методы в пейджах, в тесте не должно быть локаторов и поиска элементов

.findAll(By.cssSelector(".toolbar_nav_i"));


Ожидаемые значения можно вынести в константы

assertThat(names, hasItem("Невидимка"));


Это все надо спрятать, когда мы читаем код теста, мы должны легко понимать, что происходит, а потом уже углубляться в реализацию при необходимости

.findAll(By.cssSelector(".u-menu_li"))
.texts()
.stream()
.map(String::length)
.toList();

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.