3

我有一个正在运行的应用程序http://localhost:6543- 它是一个 Pyramid 应用程序。

  • 这个应用程序在 / 处为 AngularJS 应用程序提供服务
  • 这个应用程序使用 socket.io 本身

问题是: 是否可以使用这些工具测试该应用程序?

我的scenario.js文件中有这个:

beforeEach(function() {
   browser().navigateTo('http://localhost:6543/');
});

但是当我启动 testacular(使用runor start)时,我收到以下错误消息:

Chrome 23.0 registration: should delete all cookies when user clicks on "remove all" button FAILED
browser navigate to 'http://localhost:6543/'
/home/abourget/myapp/jstests/scenarios/registration_scenario.js:9:5: Sandbox Error: Application document not accessible.

所以我知道浏览器不允许访问iframe's 文档,因为这会违反一些跨域。

我尝试了什么:

  • 使用 Testacular Web 服务器(带有proxies选项)代理到我的应用程序,但/会与 Testacular 自己的框架服务冲突。此外,这两个应用程序最终都会尝试使用/socket.io,这也会发生冲突。
  • 做相反的事情(调整我的应用程序以代理到 Testacular 的服务器),但是,我们会遇到同样的问题/socket.io

感谢这些伟大的工具,顺便说一句!

4

2 回答 2

5

而不是拥有

beforeEach(function() {
    browser().navigateTo('http://localhost:6543/');
});

将其更改为

beforeEach(function() {
    browser().navigateTo('/');
});

然后在你的 testacular-e2e.conf.js 文件中添加:

proxies = {
    '/': 'http://localhost:6543/'
};

您可能还有其他问题,但我可以重现“沙盒错误:无法访问应用程序文档”。仅带有Pyramid Hello World 应用程序和此配置问题的消息。

于 2012-12-10T02:17:54.083 回答
2

我们遇到了类似的问题,并且已经有了代理和 navigateTo('/')。我们需要添加一些 urlRoot 以避免加载 socket.io 时发生冲突。我们只是添加了“/e2e”,这足以解决冲突。实际上,针对这个问题运行 testacular 时有一条警告消息。

于 2013-03-20T12:04:20.243 回答