@AntonVir

Как в Nightwatch.js запретить/игнорировать тестирование на главной странице?

Всем привет! Сразу оговорюсь, я совсем-совсем новичок и с автотестами до этого не сталкивался, поэтому сильно не пинайте.

Имеется вот такой простенький автотест, который работает сразу на всех проектах заказчика (а их у него не мало). Суть теста заключается в том, чтобы искать на каждой странице сайта ссылки на главную страницу и если этих ссылок меньше 2, то тест не проходит и выдает ошибку:

module.exports = {
  disabled: false,
  name: 'Ссылки на главную страницу',
  subtitle: ['Ссылок на главную страницу меньше 2 шт.'],
  fn: function(browser) {
    browser.elements('css selector', 'a[href="/"]', function(result) {
      let allLinksToMain = result.value.length;

      if (allLinksToMain < 2) {
        browser.verify.ok(false, 'Ссылок на главную меньше 2 шт.');
      }
    });
  }
};

Сейчас появилась необходимость изменить автотест так, чтобы он продолжал искать ссылки на всех страницах сайта, кроме главной страницы, её автотест должен игнорировать. Вроде бы задача не выглядит сложной, но мозг я себе уже изрядно поломал...
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
@AntonVir Автор вопроса
Удалось решить задачу и немного улучшить автотест. Может быть кому-нибудь будет полезно:
module.exports = {
    disabled: false,
    name: 'Ссылки на главную страницу',
    components: ['webmaster'],
    subtitle: [
        'Ссылок на главную меньше 2 шт. Отсутствуют ссылки в хэдере или футере',
        'Отсутствует хотя бы 1 ссылка в логотипе',
    ],
    fn: function(browser) {
        browser.execute(
            function() {
                // Собираем по частям адрес главной страницы
                let mainPageUrl = window.location.protocol + "//" + window.location.host + "/";
                // Получаем адрес текущей страницы
                let currentUrl = window.location.href;
                // Создаем объект с полученными адресами
                return result = {
                    main: mainPageUrl,
                    current: currentUrl,
                }
            }, [],
            function(result) {
                // Сравниваем адреса текущей и главной страниц, если они отличаются, то выполняем поиск <a> на главную страницу
                if (result.value.current !== result.value.main) {

                    // Находим все <a>, ведущие на главную страницу
                    browser.elements('css selector', 'a[href="/"]', function(result) {
                        // Если <a> на главную меньше 2 шт., то выводим ошибку, если все Ок - идём дальше
                        if (result.value.length < 2) {
                            browser.verify.ok(false, 'Ссылок на главную меньше 2 шт. Отсутствуют ссылки в хэдере или футере');
                        } else {
                            // Находим все <img> и <svg>, обёрнутые в <a>, которые ведут на главную страницу
                            browser.elements('css selector', 'a[href="/"] > img, a[href="/"] > svg', function(result) {
                                // Если <img> и <svg>, обёрнутых в <a> меньше 1 шт., то выводим ошибку
                                if (result.value.length < 1) {
                                    browser.verify.ok(false, 'Отсутствует хотя бы 1 ссылка в логотипе');
                                }
                            });
                        }
                    });

                }
            }
        );
    }
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы