我被分配了一项任务,将我开发的自动化测试集成到 AWS CI/CD 管道中,我研究如何实现此任务有一段时间了。在做了一些研究之后,我发现很多人都使用 Jenkins/Docker 之类的工具来完成这项任务,即使做了所有的研究,我仍然对实现这一目标的最佳方法感到困惑,这里有一些文档我发现,
http://www.testautomationguru.com/selenium-webdriver-how-to-run-automated-tests-inside-a-docker-container/
https://www.pawangaria.com/post/docker/how-to-use-docker-with-webdriver/
https://aws.amazon.com/blogs/devops/using-aws-codepipeline-aws-codebuild-and-aws-lambda-for-serverless-automated-ui-testing/
https://dzone.com/articles/qa-automation-pipeline-learn-how-to-build-your-own-1
我应该做的是,一旦开发人员正在处理的 Web 应用程序通过管道部署,我将不得不通过管道运行 selenium 测试以检查 Web 应用程序是否正确部署。 (这是我需要澄清实现这一目标的最佳方法的地方)
我用 selenium 脚本构建了一个 maven 项目来检查 Web 应用程序上的内容,现在我在脚本中使用了一个虚拟 url,这是 maven 项目
https://github.com/nimeshdilshan96/pipeline-script-test.git
这是我迄今为止所做的,
在这一点上我真的很困惑并坚持应该做什么,这里有一些我正在寻找答案的问题,
任何帮助将不胜感激,提前致谢:)
最佳答案
我使用了两种方法:
在这两种情况下,CodePipeline 都包含 4 个步骤:
每一步都会产生输出,用于下一步。部署步骤生成 selenium 可以使用的 URL。在我的情况下,“部署”是部署 CloudFormation 堆栈,但它也可以将必要的文件复制到 S3 存储桶或使用其他一些方法。
我的设置类似,但比:https://aws.amazon.com/blogs/devops/using-aws-codepipeline-aws-codebuild-and-aws-lambda-for-serverless-automated-ui-testing/ 简单得多。 .
挑战
最大的问题是如何获得 selenium、浏览器和 webdriver 的正确组合。关于如何做到这一点,有不同的指南。试试对你有用的东西,所有的实现都是乱七八糟的,但我认为 Docker 更可靠。
示例 docker-compose:
version: '2'
services:
hub:
image: selenium/hub:3.3.1
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.3.1
links:
- hub
environment:
HUB_PORT_4444_TCP_ADDR: hub
HUB_PORT_4444_TCP_PORT: 4444
DBUS_SESSION_BUS_ADDRESS: /dev/null
firefox:
image: selenium/node-firefox:3.3.1
links:
- hub
environment:
HUB_PORT_4444_TCP_ADDR: hub
HUB_PORT_4444_TCP_PORT: 4444
phantomjs:
image: selenium/node-phantomjs:3.3.1
links:
- hub
environment:
HUB_PORT_4444_TCP_ADDR: hub
HUB_PORT_4444_TCP_PORT: 4444
PHANTOMJS_OPTS: "--ignore-ssl-errors=true"
b3-test:
build: .
volumes:
- ./logs:/app/survey-tests/logs
- ./screenshots:/app/survey-tests/screenshots
environment:
- BTEST_DRIVER=REMOTE
- BTEST_REMOTE=http://hub:4444/wd/hub
关于selenium - 在 AWS CI/CD 管道中运行 selenium 测试的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54822954/