Как проверить модальность начальной загрузки в CSS Регрессионное тестирование backstopjs

Я пытаюсь смоделировать нажатие элементов CSS на моей странице и автоматически делать скриншоты окна на каждом этапе для целей тестирования. Я использую backstopJS в качестве фреймворка CSS для тестирования / скриншотов. Кажется, все работает нормально для этого первого элемента. Модальный режим запускается, когда я нажимаю на ссылку регистрации в главном меню заголовка. но это не генерирует никакого справочного скриншота модального.

Пожалуйста, помогите вызвать скриншот ссылки модального в приведенном ниже скрипте

Это скрипт:

{
  "viewports": [
    {
      "name": "desktop",
      "width": 1600,
      "height": 900
    },
    {
      "name": "phone",
      "width": 320,
      "height": 480
    },
    {
      "name": "tablet_v",
      "width": 568,
      "height": 1024
    },
    {
      "name": "tablet_h",
      "width": 1024,
      "height": 768
    }
  ],
  "grabConfigs" : [
    {
      "testName":"vawizard"
      ,"url":"http://localhost/vawizard/index.html"
      ,"hideSelectors": [

      ]

      ,"removeSelectors": [
        "header.banner--clone"
      ]
      ,"selectors":[
        "#outer_wrapper header"
        ,".banner_box"
        ,".help_desk"
        ,".big_search_box"
        ,".look_specific"
        ,".smart_tool_box"
        ,"footer"
        ,".copyright_box"
      ]
    }
  ]
}

Это ссылка http://wizard.hodgesdigital.com/

Есть идеи, что может быть причиной такого поведения?

2 ответа

BackstopJS в основном сосредоточен на тестировании состояний макетов на экранах разных размеров и не поддерживает тестирование пользовательских взаимодействий.

В вашем случае я могу сделать две рекомендации. 1) Вы можете добавить состояние к вашему URL, которое запускает модальный режим при загрузке вашей страницы, ИЛИ 2) вы можете написать собственный скрипт CasperJS для таких тестовых случаев, которые требуют некоторого взаимодействия с пользователем. Более подробно ниже...

Подход 1: В первом случае вы можете добавить хеш к вашему URL, который вызовет ваш модальный режим. По моему опыту, веб-приложения (например, Angular и Ember) обычно представляют модальные состояния таким образом....

// in your BackstopJS config
"url": "http://localhost/vawizard/index.html#openModal",


// then as part of a jQuery script
$(document).ready(function(){
  if ( /openModal/.test(location.hash) )
    {
      // Do your open modal action here
      // Then trigger BackstopJS
    }
});

Подход 2: Если вышесказанное не ваш стиль, есть еще один хороший вариант. В рамках установки BackstopJS у вас также есть полная версия CasperJS - поэтому я бы порекомендовал перейти на CasperJS.org, чтобы взглянуть на некоторые базовые примеры и посмотреть, имеет ли смысл писать свои собственные скрипты. В краткосрочной перспективе это займет немного больше времени, но шаблон для конкретного проекта, который вы пишете сейчас, может быть полезен для будущих крайних случаев (для тестирования форм, других взаимодействий и т. Д.).

Для таких вещей мы используем собственные скрипты. например

      module.exports = async(page, scenario, vp) => {
  await require('./onReadyInfo')(page, scenario, vp);
  await require('./clickAndHoverHelper')(page, scenario, vp);
  await require('./onReadyWaitForImages')(page, scenario, vp);

  await page.waitForSelector("div[data-social-media-source='instagram'] a[data-target='#social-media-settings']");
  await page.click("div[data-social-media-source='instagram'] a[data-target='#social-media-settings']");
  await page.waitForSelector(
    "#checkbox-twitter", {
      timeout: 6000
    }
  );
  await page.waitForTimeout(500);
  await page.evaluate(async() => {
    jQuery("#checkbox-twitter + label").click();
    setTimeout(() => {
      jQuery('#checkbox-twitter + label').focus()
    }, 500);
  });
  await new Promise(resolve => setTimeout(resolve, 300));
};

При нажатии на ссылку откроется диалоговое окно, установите флажок и выделите ярлык.

Другие вопросы по тегам