Как написать автоматизированные тесты для тега <noscript>? - PullRequest
0 голосов
/ 14 октября 2018

Я создаю веб-приложение, которое использует тег <noscript>, если Javascript отключен.Я хотел бы проверить, что этот тег показывает, но я не уверен, как это сделать с любой из моих фреймворков, или с любой фреймворком в целом.

В рассматриваемом приложении по умолчанию показывается следующее, когдаJavascript отключен:

 <div>
  <noscript>
    <h1>Javascript Disabled</h1>
    Use this page to show content when Javascript has been disabled
  </noscript>
 </div>

При загрузке скрипта приложение заменяет вышеприведенное на следующее:

 <div>
   Hello World
 </div>

Прямо сейчас для тестов я использую NightmareJS и Testem с жасмином.Мне не нужно их использовать, но я бы хотел использовать Javascript, если это возможно.

Я полностью озадачен здесь и понятия не имею, с чего бы мне начать - все вопросы о StackOverflow, похоже, касаются того, как ИСПОЛЬЗОВАТЬ <noscript>, а не проверять его в сквозной или единичной структуре.тест (в автоматическом режиме).

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Для тех, кто использует Nightmare JS, существует опция при создании экземпляра Nightmare, однако некоторые функции, похоже, не запускаются (например, evaluate или exists).В моем случае я сохранил страницу как HTML, а затем проверил, что HTML существует.Также можно сохранить скриншот или PDF, чтобы также проверить правильность вывода.

const nightmare = require('nightmare')
const fs = require('fs')

const browser = nightmare({
  webPreferences: {
    javascript: false
  }
})

describe('Page with Javascript Off', () => {
  beforeAll((done) => {
    browser.goto('http://localhost:8080')
      .html('./tests/no-js-result.html', 'HTMLOnly')
      .then(() => done())
  })
  it('should show page when JS is disabled', (done) => {
    fs.readFile('./tests/no-js-result.html', 'utf8', function(err, html){
      if (err) fail('Could not read no-js-result.html')
      expect(html).toContain('<h1>Javascript Disabled</h1>')
      done()
    })
  })
})
0 голосов
/ 14 октября 2018

NightmareJS использует Electron под капотом для запуска тестов, которые не поддерживают прохождение флага , который отключает Javascript, хотя я должен предупредитьВы, что я не так много копался.

... Я использую NightmareJS и Testem с жасмином.Мне не нужно их использовать, но я бы по-прежнему хотел использовать javascript, если это возможно.

Другое решение - использовать NightwatchJS вместо NightmareJS, который являетсякаркас тестирования, использующий ChromeDriver для запуска тестов, который позволяет отключить JS путем передачи преференций в Chromium.

Я написал пример проекта в качестве очень простого примера накак запускать тесты NightwatchJS с отключенным JS.

В проекте для отключения JS используется следующая конфигурация:

nightwatch.json

{
  "test_settings" : {
    "default" : {
      "desiredCapabilities": {
        "browserName": "chrome",
        "chromeOptions" : {
          "prefs" : {
            "profile.managed_default_content_settings.javascript": 2
          }
        }
      }
    }
  }
}

В приведенной выше конфигурации этоконкретная строка, которая передается в Chromium, которая намекает на то, что мы хотим отключить JS, когда NighwatchJS запускает тесты:

"profile.managed_default_content_settings.javascript": 2

При этом я бы посоветовал вам более тщательно изучить документацию / проблемы Nightmare, чтобы проверитьесли вы можете передать вышеупомянутый преф через NightmareJS вместо того, чтобы переписать все ваши тесты в NightwatchJS для этой маленькой причуды.

...