【问题标题】:How to test e2e google chrome extension with karma?如何使用 karma 测试 e2e google chrome 扩展?
【发布时间】:2013-06-28 16:30:40
【问题描述】:

我找到了很棒的单元/e2e 测试工具karma。 我用angular 编写了简单的 chrome 扩展。我想为它编写自动化测试,但不仅是单元测试,还有端到端测试。 我写了这样的东西(将打开我的角度扩展选项页面):

 it('Go to options page', function() {
   browser().navigateTo('chrome-extension://aopgehikihpnclbfeohobanjecpiefho/html/application.html#/options');
 });

我为 karma-chrome-launcher 删除了“--user-data-dir”和“--disable-default-apps”,(因为我希望我的扩展程序在“业力测试”期间保持在 chrome 中)

但我收到下一条错误消息“沙盒错误:无法访问应用程序文档。”

    browser navigate to 'chrome-extension://aopgehikihpnclbfeohobanjecpiefho/html/application.html#/options'
    http://localhost:9876/base/tests/e2e/scenario.js?1372429335000:9:5: 

    Sandbox Error: Application document not accessible.

    Chrome 27.0 (Windows): Executed 2 of 2 (2 FAILED) (0.254 secs / 0.139 secs)

Chrome 选项 --no-sandbox 很久以前就弃用了。

我确定我没看错,选项页面打开正常,但来自 chrome “omnibox”。

chrome-extension://aopgehikihpnclbfeohobanjecpiefho/html/application.html#/options

沙盒错误意味着 无法通过 karma 对 google chrome 扩展进行端到端测试? 我可以将 chrome 设置为特殊的“非安全”模式来进行测试吗?

谢谢,

【问题讨论】:

  • github.com/salsita/chrome-angular-skeleton 链接到角度扩展,似乎没有 google chrome 扩展的业力单元测试和端到端测试,所以我必须为它编写自己的单元测试
  • application.html 是否列在扩展程序清单的 web-accessible-resources 部分中?
  • 是的,我在“web_accessible_resources”中有 html/application.html:[“js/*”、“html/*”、“css/*”、“images/*”]、

标签: angularjs google-chrome-extension integration-testing karma-runner


【解决方案1】:

我不认为业力情景赛跑者有能力做到这一点。你可以试试Protractor,它使用了WebDriver,karma 场景运行器将被替换为它。

【讨论】:

  • 我尝试了量角器并看到 WebDriver 打开扩展选项页面正常(我在浏览器中观察它),但是Error: Angular could not be found on the page chrome-extension://ojkcpfmpkjjdmhmbgjdobncijnbgenbo/html/application.html#/options。我是量角器和 webdriver 的菜鸟,我可以尝试以不同的方式访问元素吗?我试过ptor.findElement(protractor.By.bind('options_page'))
  • 如果没有看到代码我不能说太多,但你是手动引导角度吗?你也可以尝试其他选择器来测试,比如 By.css。
  • 是的,我 bootstrap angular manually 由于 require.js
  • 手动引导没问题,但请确保在根元素上添加 ng-app,以便 Angular 场景运行器可以找到它...
  • 我想我理解这个问题。我向您发送拉取请求 (github.com/salsita/chrome-angular-skeleton/pull/1)。添加类后,您需要调用 angular.bootstrap。此外,我在量角器中添加了一行,不知何故 window.name 未设置为 DEFER_LABEL 并且引导恢复不起作用。
【解决方案2】:

如果您尝试设置代理会怎样?喜欢

proxies = {
    '/': 'chrome-extension://aopgehikihpnclbfeohobanjecpiefho/'
};

在您的 karma-e2e.conf.js 文件中,然后

browser().navigateTo('/html/application.html#/options');

在测试中?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多