INTEGRATION • GITHUB

GitHub test management, in Jira

Stop copying CI results into Jira. AgileTest imports every GitHub Actions run and links the results to your requirements.

Try it freeBook a demo
4.6/5 on Atlassian MarketplaceFree for up to 10 users
Classic Test / Automated Tests
Work item keyFrameworkStatusMore
Test Execution ⇅Source ⇅Framework ⇅Status ⇅Creator ⇅Created at ⇅Completed at ⇅
SHOP-131ImportJUnitSuccessECEmma Clark2 minutes ago1 minute ago
SHOP-129ImportTestNGSuccessASAna Silva1 hour ago1 hour ago
SHOP-127ImportRobot FrameworkSuccessECEmma Clark3 hours ago3 hours ago
ImportCucumberFailLMLucas Meyer5 hours ago5 hours ago
SHOP-126ImportCucumberSuccessLMLucas Meyer5 hours ago5 hours ago
SHOP-124ImportJUnitSuccessECEmma ClarkYesterdayYesterday
SHOP-122ImportNUnitSuccessASAna SilvaYesterdayYesterday
SHOP-119ImportBehaveSuccessLMLucas Meyer2 days ago2 days ago
SHOP-117ImportxUnitSuccessASAna Silva2 days ago2 days ago
‹12›Rows per page 10
GitHub run #482Results imported to SHOP-131
Works withJUnitNUNUnitTeTestNGxUxUnitRobot FrameworkCucumberBeBehave
AUTOMATIC IMPORT

Results land in Jira on every run

Each run creates or updates a Test Execution. New tests become test cases.

Create or updateA new Test Execution per run, or add to an existing one.
No duplicatesTests are matched by suite and test name.
Statuses and stepsPass, Fail, Skipped and more, mapped for you.
Screenshots attachedAttachments in the report land on the test run.
AgileTest automation#482 · main
✓Set up job1s
✓Run tests3m 48s
✓Submit test result to AgileTest6s
Test ExecutionsSHOP-131×
Execution results · Checkout
Updated by GitHub run #482 · just now
Overall Execution Status (Total tests: 128)94% Pass
KeySummaryRun status
SHOP-218CheckoutTest · orderIdPass
SHOP-226PaymentTest · card3ds1Fail
SHOP-231AddressTest · savedAddressSkipped
SHOP-245EmailTest · orderEmailNewPass
Re-run #483 updates SHOP-131 · no duplicates
Test ExecutionsSHOP-131×
Automated regression · Staging
Test plan SHOP-120 · Fix version 4.2 · Environment Staging
Remote Trigger
GitHub · Nightly regression ▾Run
Repository shop/web-appWorkflow agiletest.ymlBranch main
Recent runs
GitHub run #482SuccessToday 09:14
GitHub run #481FailedYesterday 18:02
GitHub run #480SuccessYesterday 09:11
TRIGGER FROM JIRA

Start a run without leaving Jira

Trigger the GitHub workflow from a Test Execution and follow its status.

  1. 1
    Set up onceAdd a GitHub configuration in Settings › Automated Test. Optionally set the test plan, environment, fix version and milestone.
  2. 2
    Click RunFrom the AgileTest panel on any Test Execution. Nothing else to fill in.
  3. 3
    Follow the runThe workflow status posts back to Recent runs.
TRACEABILITY

Automation that counts toward coverage

Link automated test cases to requirements, next to your manual tests.

Linked to requirementsAutomated tests count in requirement coverage.
Latest statusSee OK or NOK on each requirement after every run.
Defects from failuresLog a bug from a failed run, linked back to it.
Reports in JiraTest Coverage and Traceability reports.
Projects/Shop/SHOP-87In progress
SHOP-87
Guest checkout
AgileTestLatest test status NOK
To Do 1Pass 2Fail 1
Test Cases 4Test ScriptsTest Sessions
KeySummaryTypeLatest status
SHOP-214Apply discount code as guestManualFailRe-run
SHOP-215Pay by cardManualPassRe-run
SHOP-218Checkout API returns order IDGenericPassAutomated
SHOP-217Order email is sentManualTo DoRun
GitHub run #482JUnit results imported
120 passed3 failed5 skipped
.github/workflows/agiletest.yml
name: AgileTest automation
on: workflow_dispatch
env:
  BASE_URL: ${{ vars.BASE_URL }}
  BASE_AUTH_URL: ${{ vars.BASE_AUTH_URL }}
  CLIENT_ID: ${{ secrets.CLIENT_ID }}
  CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
  PROJECT_KEY: ${{ vars.PROJECT_KEY }}
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with: { java-version: "17", distribution: temurin }
      - name: Build with Maven
        run: mvn -B package --file pom.xml
      - name: Submit test result to AgileTest
        run: |
          docker run --rm \
            -e AGILETEST_BASE_URL=$BASE_URL \
            -e AGILETEST_AUTH_BASE_URL=$BASE_AUTH_URL \
            -e AGILETEST_CLIENT_ID=$CLIENT_ID \
            -e AGILETEST_CLIENT_SECRET=$CLIENT_SECRET \
            -v ${{ github.workspace }}/target/surefire-reports:/reports \
            ghcr.io/agiletestapp/agiletest-cli:latest \
            test-execution import --framework-type junit \
            --project-key $PROJECT_KEY /reports/TEST-calculateTest.xml
      - name: Submit test result using API
        run: |
          # 1. Get a temporary token
          export token=$(curl "$BASE_AUTH_URL/api/apikeys/authenticate" \
            -X POST -H 'Content-Type:application/json' \
            --data '{"clientId":"'"$CLIENT_ID"'","clientSecret":"'"$CLIENT_SECRET"'"}' | tr -d '"')
          # 2. Send the JUnit report
          curl -X POST "$BASE_URL/ds/test-executions/junit?projectKey=$PROJECT_KEY" \
            -H "Content-Type:application/xml" \
            -H "Authorization:JWT $token" \
            --data-binary "@target/surefire-reports/TEST-calculateTest.xml" 
env:
  BASE_URL: ${{ vars.BASE_URL }}
  DC_TOKEN: ${{ secrets.DC_TOKEN }}     # Jira personal access token
  PROJECT_KEY: ${{ vars.PROJECT_KEY }}
# …build steps as before, then:
      - name: Submit test result to AgileTest
        run: |
          docker run --rm \
            -e AGILETEST_BASE_URL=$BASE_URL \
            -e AGILETEST_DC_TOKEN=$DC_TOKEN \
            -v ${{ github.workspace }}/target/surefire-reports:/reports \
            ghcr.io/agiletestapp/agiletest-cli:latest --data-center \
            test-execution import --framework-type junit \
            --project-key $PROJECT_KEY /reports/TEST-calculateTest.xml
SETUP

One step in your workflow

Add one step after your tests. Works on Jira Cloud and Data Center.

CLI or REST APIThe AgileTest CLI Docker image, or two curl calls.
Cloud and Data CenterClient ID and Secret, or a Jira personal access token.
Secrets stay in GitHubStored as Actions secrets and variables.
Sample repositoryA working example to copy from.
HOW IT WORKS

Set up with the official guides

FAQ

Questions, answered

Does AgileTest run my automated tests?

No. GitHub Actions keeps building and running your tests. AgileTest imports the results into Jira, and can start a configured workflow from a Test Execution.

Should I use the AgileTest CLI or the REST API?

Either works. The CLI runs as a Docker image (ghcr.io/agiletestapp/agiletest-cli) with one import command. The REST API uses two curl calls: one for a token, one to send the report.

Which report formats are supported?

JUnit, NUnit, TestNG, xUnit and Robot Framework (XML), plus Cucumber and Behave (JSON). Tools that export JUnit XML, such as Playwright, Cypress and pytest, work too.

Can I start a GitHub workflow from Jira?

Yes. Add a GitHub configuration in AgileTest settings (owner, repository, workflow file, branch and a GitHub personal access token), then trigger the pipeline from a Test Execution.

Does it work on Jira Cloud and Data Center?

Yes. Cloud uses an AgileTest Client ID and Client Secret. Data Center uses a Jira personal access token.

Bring your GitHub test results into Jira

ALSO WORKS WITH