A
A
AntonVir2021-03-03 04:50:33
Node.js
AntonVir, 2021-03-03 04:50:33

How to disable/ignore testing on the main page in Nightwatch.js?

Hello! I’ll make a reservation right away, I’m a completely, completely newbie and I haven’t come across autotests before, so don’t kick much.

There is such a simple autotest that works on all customer projects at once (and he has quite a few of them). The essence of the test is to look for links to the main page on each page of the site, and if there are less than 2 of these links, then the test fails and gives an error:

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 шт.');
      }
    });
  }
};

Now there is a need to change the autotest so that it continues to look for links on all pages of the site, except for the main page , autotest should ignore it. It seems that the task does not look difficult, but I already pretty much broke my brain ...

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
AntonVir, 2021-03-04
@AntonVir

I managed to solve the problem and slightly improve the autotest. Maybe it will be useful for someone:

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 ссылка в логотипе');
                                }
                            });
                        }
                    });

                }
            }
        );
    }
};

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question