如何编写<noscript>标签的自动化测试?

时间:2018-10-14 19:47:04

标签: javascript html testing integration-testing noscript

我正在构建一个Webapp,如果禁用了Javascript,该Webapp将落在

在禁用Javascript的情况下,默认情况下,有问题的应用显示以下内容:

  
    

加载脚本后,应用程序将以下内容替换为以下内容:

  
   你好,世界  

现在进行测试,我将NightmareJS和Testem与茉莉一起使用。我不必使用那些,但是如果可能的话,我仍然想使用Javascript。

我完全迷住了,甚至不知道从哪里开始-所有StackOverflow问题似乎都是关于如何使用

2 个答案:

答案 0 :(得分:2)

NightmareJS在后台使用Electron来运行doesn't seem to support passing a flag禁用Javascript的测试,尽管我必须警告您,我并没有那么做。

  

...我正在将NightmareJS和Testem与茉莉花一起使用。我不必使用那些,但是如果可能的话,我仍然想使用javascript。

另一种解决方案是使用NightwatchJS代替NightmareJS,它是一个使用ChromeDriver驱动测试的测试框架,该测试框架允许通过将prefs传递给Chromium来禁用JS。

我写了一个sample project作为非常基本的示例,说明了如何在禁用JS的情况下运行NightwatchJS测试。

项目使用以下配置禁用JS:

nightwatch.json

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

在上面的配置中,正是这条特殊的行传递给Chromium,这暗示着我们希望在NighwatchJS运行测试时禁用JS:

"profile.managed_default_content_settings.javascript": 2

话虽如此,我建议您更深入地了解Nightmare的文档/问题,以检查是否可以通过NightmareJS通过上面的推荐,而不是为了这个小怪癖而在NightwatchJS中重写所有测试。

答案 1 :(得分:1)

对于使用Nightmare JS的用户,创建噩梦实例时可以使用一个选项,但是某些功能似乎无法运行(例如evaluateexists)。就我而言,我将页面另存为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()
    })
  })
})