Add CI/CD GitHub Actions workflows, dependabot config and runner image - #19
Open
devin-ai-integration[bot] wants to merge 4 commits into
Open
Add CI/CD GitHub Actions workflows, dependabot config and runner image#19devin-ai-integration[bot] wants to merge 4 commits into
devin-ai-integration[bot] wants to merge 4 commits into
Conversation
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Author
End-to-end verification of the CI/CD changes (headless, local runner)Executed the pipeline's real commands on a Linux box (Chrome 137.0.7118.2 / chromedriver 137.0.7151.119). Firefox leg skipped locally — not installed on the test machine — but the
Notes
Tested by Devin — session: https://partner-workshops.devinenterprise.com/sessions/2f4377267f124bd29acb1ea2c36eb3de |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
ci.yml(compile check, headless TestNG matrix, dependency scanning, nightly cron), a fully mocked AWS delivery pipeline incd.yml,dependabot.yml, a container runner image, and README docs. Two small framework changes were required to make CI feasible; everything else is workflow/config.Framework changes (
BaseTest)The suite hardcoded a Chrome driver created via WebDriverManager, so a browser matrix and offline-safe driver resolution were impossible:
resolveDriverBinaryhonourswebdriver.*.driverand theCHROMEWEBDRIVER/GECKOWEBDRIVERdirectories that GitHub runners (and the newDockerfile) expose, so no driver download is needed at run time.wrapUpnow calls onlydriver.quit()— the previousclose()+quit()pair throwsNoSuchSessionExceptionon Firefox, whereclose()already ends the session (reproduced locally in a container with real Firefox 154).pom.xmlgains asuiteXmlFileproperty so Surefire's suite is selectable with-DsuiteXmlFile=.... Compiler source/target stay at 1.8; the JDK in CI is Temurin 17 because Selenium 4.25 ships Java 11 class files and cannot be loaded by a JDK 8 toolchain.ci.ymlpush/PR + nightly cron (02:00 UTC) +
workflow_dispatch(suite,browserchrome/firefox/both,thread_count— applied by rewritingthread-count="N"into a copy of the suite before the run). Jobs:compile(mvn -ntp -B clean test-compile),matrix-setup(resolves the browser matrix from the dispatch input),test(chrome/firefox matrix, headless, Extent HTML +logfile.log+ Surefire/TestNG artifacts, job-summary table rendered by.github/scripts/testng_summary.py),dependency-scan(Trivy SARIF + dependency tree) anddependency-reviewon PRs. Concurrency groups cancel superseded PR runs only;permissionsare read-only except where SARIF/PR comments need more.The suite job is intentionally non-gating (
continue-on-error+-Dmaven.test.failure.ignore=true): the demo tests drivegoogle.co.inandfacebook.com, andFaceBookLoginTestassertsfalseby design, so an outage or that intentional failure would otherwise red-flag every run. The job summary distinguishes "no results produced" (suite never started) from real failures. The gating signal is thecompilejob.cd.yml— mocked, cannot touch real infraworkflow_dispatchonly, and DRY_RUN unlessdry_run=falseand repository variableENABLE_REAL_AWS_DEPLOY == 'true'. In DRY_RUN the runner image is built but no AWS credentials are configured — theaws ecr/aws ecs run-task/aws s3 cpcommands are only echoed into the job summary. Real-run steps use AWS OIDC (permissions: id-token: write) with a placeholder role ARN. All identifiers are commented placeholders:123456789012.dkr.ecr.us-east-1.amazonaws.com, repo/clusterdemo-selenium-testng, task defdemo-selenium-testng-runner, reports bucketdemo-selenium-testng-reports. Deploy stages run through GitHub environmentsstagingthenproduction(add required reviewers toproductionfor the approval gate).Verified locally
mvn -ntp clean test-compileand headless single-class run: pass.CHROMEWEBDRIVERset,-Dmaven.test.failure.ignore=true):Tests run: 2, Failures: 1(the intentionalFaceBookLoginTest) withBUILD SUCCESS, and the summary script renders that table.docker build+docker runof the new image: suite runs headlessly inside the container against Chrome for Testing.Link to Devin session: https://partner-workshops.devinenterprise.com/sessions/2f4377267f124bd29acb1ea2c36eb3de
Requested by: @mbatchelor81