Открыть список
Как стать автором
Обновить

Комментарии 10

Удивительный эффект от внедрения Cypress — программистов больше не надо бить палкой, чтобы они написали хоть парочку e2e-тестов.
Когда тестов станет на парочка уже никто не захочет этим заниматься. Cypress больше подходит для интеграционных тестов, но не для e2e в большом проекте (имхо).
программистов больше не надо бить палкой, чтобы они написали хоть парочку e2e-тестов

При чём здесь программисты? А тестировщики тогда для чего?
Единственная проблема которую я не смог решить – это воспроизводимость теста. А именно стабильные и одинаковые начальные данные для запуска теста (fixtures), это более конфигурационная задача, а не Cypress, но все равно пока нерешенная.

Судя по документации, Cypress умеет работать с фикстурами. В общем, надо пробовать.


Ещё из хорошего, о чём не сказано в статье: он умеет в скриншотные (визуальные) тесты.

Технологически неудачное название, которое может застопорить любые плюсы. Хотя говорят — Cypress была куплена Infineon. Да и вебчик может победить реальное программирование.

А что плохого в названии? Произносится просто, ничего на первый взгляд не означает..

Назвать чтоль какой-нибудь программный продукт Apple… Всё равно многие не знают, что уже есть такая фирма и они чего-то выпускают.
www.cypress.com
а так-то да, совсем ничего, что это с вебчиком всю жизнь никак не было связано.
Да вроде пофиг вообще, ну выпускают какие-то кексы полупроводники, дык это не наша отрасль. По-моему, маркетингу это никак не вредит, cypress все знают и любят и ни с чем не путают.
Начну с того, что по автотестированию я ничего никогда не читал. Основной преконсепшн был, что автотесты это сложно, потому что по отзывам пока этот Selenium настроишь… Плюс надо учить XPath и PageObject, чего делать вообще не хотелось.

Мне кажется вы погорячились. Если речь идёт про написание тестов руками (без красивучих нажималок-записывалок), настраивать там ничего не нужно. И конечно можно использовать CSS селекторы, а не XPath. Только код при этом на Java (https://www.selenium.dev/documentation/en/):


public class HelloSelenium {
    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        try {
            driver.get("https://google.com/ncr");
            driver.findElement(By.name("q")).sendKeys("cheese" + Keys.ENTER);
            WebElement firstResult = wait.until(presenceOfElementLocated(By.cssSelector("h3>div")));
            System.out.println(firstResult.getAttribute("textContent"));
        } finally {
            driver.quit();
        }
    }
}

Единственная проблема которую я не смог решить – это воспроизводимость теста. А именно стабильные и одинаковые начальные данные для запуска теста (fixtures), это более конфигурационная задача, а не Cypress, но все равно пока нерешенная.

Код, приведённый выше, конечно же можно засунуть в обычный интеграционный тест — и будет у вас воспроизводимое e2e с одновременный доступом и к серверным компонентам, и к броузеру:


@SpringBootTest
class E2eTest {
  @Autowired
  OrderRepository orderRepository;

  @Test
  void test() {
        WebDriver driver = new FirefoxDriver();
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        try {
            driver.get("https://localhost/orders");
            driver.findElement(By.name("createOrder")).sendKeys(Keys.ENTER); // FE

            assertEquals(1, orderRepository.count()); // BE
        } finally {
            driver.quit();
        }
  }
}

Вся эта обвязка красиво прячется или в JUnit rule, или в Springовый test execution listener. Вот в статье похожий подход.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Информация

Дата основания
Местоположение
Россия
Сайт
career.luxoft.com
Численность
свыше 10 000 человек
Дата регистрации
Представитель
LuxoftRussia

Блог на Хабре