如何在Web Component Tester中替换服务器

时间:2015-11-03 18:51:31

标签: selenium polymer web-component-tester

我有一个基于Polymer Starter Kit设置的项目,其中包括Web-Component-Tester

这个项目包括php服务器代码,我也想通过编写在浏览器中运行的测试来测试,该浏览器将通过Ajax Calls利用PHP服务器代码。

这意味着在测试服务器端代码时,仅替换Web组件测试程序正在使用的服务器。我希望能为此做一个单独的gulp任务。

不幸的是,我不了解WCT,Selenium与当前运行的服务器之间的关系。我可以看到WCT命令启动Selenium,但我无法找到Web服务器是什么以及如何启动它。我怀疑它是WCT,因为有目录映射到URL的配置,但除此之外我还没有线索,尽管尝试阅读代码。

有人可以解释我在测试客户端时如何使其运行自己的服务器,但在运行服务器时依赖于已经设置的Web服务器(nginx)。我可以将nginx设置为从本地主机或其他域运行,如果这是一种选择不同配置的方法。

编辑:我现在发现runner / webserver.js启动了一个快速服务器,并且该URL被映射,因此测试运行器和bower_components目录的基本目录都被映射到/ components url。

目前令我困惑的是在什么情况下这会运行。似乎加载插件以某种方式做到了,但是我从阅读代码中获得的理解是微不足道的。

1 个答案:

答案 0 :(得分:0)

答案是Web组件测试人员本身在runner/config.js文件中有注释。

wct-conf.js中,您可以将registerHooks键用于返回的Object以添加一个函数

  registerHooks: function(wct) {
    wct.hook('prepare:webserver', function(app, done) {
      var proxy = require('express-http-proxy');
      app.use('/api',
        proxy('pas.dev', {
          forwardPath: function(req, res) {
            return require('url').parse(req.url).path;
          }
        })
      );
      done();
    });

这个注册钩子函数允许你提供一个路由(在我的情况下为/ api),它代理一个可以运行php脚本的服务器。