我正在尝试为我的节点.js应用程序设置Selenium测试,drone.io
以下示例如下:http://docs.drone.io/selenium-example/。
我的.drone.yml
如下所示:
pipeline:
test:
image: node:latest
commands:
- yarn install
- yarn build
- yarn start
- yarn test
services:
selenium:
image: selenium/standalone-chrome
我正在使用这样的硒网络驱动程序:
const driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.usingServer(`http://selenium:4444/wd/hub`)
.build();
describe('Home page', () => {
before(async () => await driver.get(`http://127.0.0.1:8080`)); // FIXME
it('should render greeting', async () => {
const src = await driver.getPageSource();
chai.expect(src).contains('Hey there!');
});
after(async () => await driver.quit());
});
现在,问题是Selenium不知道运行应用程序的URI(显然,http://127.0.0.1:8080
不起作用,因为它是不同的容器(。有没有办法指定在无人机中运行管道的容器的主机名?或者以某种其他方式使主容器可从服务访问?
谢谢。
您需要下载drone/drone:latest
以确保您拥有最新的补丁集(对于将来阅读本文的人来说,drone/drone:0.7
或更高(。
在您的示例中使用 yaml(复制如下(,Selenium 将能够在http://test:8080
访问您的节点应用程序,其中test
是管道步骤的名称和网络主机名。
pipeline:
test:
image: node:latest
commands:
- yarn install
- yarn build
- yarn start
- yarn test
services:
selenium:
image: selenium/standalone-chrome
另一个提示是确保yarn start
是非阻塞的,并且不会阻塞 shell 会话。有关更多详细信息,请参阅 http://veithen.github.io/2014/11/16/sigterm-propagation.html。
希望这有帮助!