diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index 5fc5ee427..000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,47 +0,0 @@
-[//]: # (
-. Note: for support questions, please use Stackoverflow or Gitter**.
-. This repository's issues are reserved for feature requests and bug reports.
-.
-. In case of any problems with Allure Jenkins plugin** please use the following repository
-. to create an issue: https://github.com/jenkinsci/allure-plugin/issues
-.
-. Make sure you have a clear name for your issue. The name should start with a capital
-. letter and no dot is required in the end of the sentence. An example of good issue names:
-.
-. - The report is broken in IE11
-. - Add an ability to disable default plugins
-. - Support emoji in test descriptions
-)
-
-#### I'm submitting a ...
- - [ ] bug report
- - [ ] feature request
- - [ ] support request => Please do not submit support request here, see note at the top of this template.
-
-#### What is the current behavior?
-
-
-#### If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem
-
-
-#### What is the expected behavior?
-
-
-#### What is the motivation / use case for changing the behavior?
-
-
-#### Please tell us about your environment:
-
-
-| Allure version | 2.2.0 |
-| --- | --- |
-| Test framework | testng@6.8 |
-| Allure integration | allure-testng@2.0-BETA11 |
-| Generate report using | allure-maven@2.18 |
-
-#### Other information
-
-[//]: # (
-. e.g. detailed explanation, stacktraces, related issues, suggestions
-. how to fix, links for us to have more context, eg. Stackoverflow, Gitter etc
-)
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 319290ead..363b5c7ef 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -1,7 +1,6 @@
-name: 🐞 Bug Report
-description: File a Bug report in Java Integration
-title: "🐞: "
-labels: [ "type:bug", "triage" ]
+name: Bug report
+description: Report broken or incorrect behavior in an Allure Java integration.
+type: bug
assignees: []
body:
- type: markdown
@@ -25,42 +24,40 @@ body:
description: Please select the Allure integration you
options:
- allure-assertj
- - allure-attachments
- allure-awaitility
+ - allure-bom
- allure-citrus
- - allure-cucumber2-jvm
- - allure-cucumber3-jvm
- - allure-cucumber4-jvm
- - allure-cucumber5-jvm
- - allure-cucumber6-jvm
- allure-cucumber7-jvm
- allure-descriptions-javadoc
- allure-grpc
- allure-hamcrest
- allure-httpclient
+ - allure-httpclient5
+ - allure-java-httpclient
- allure-java-commons
+ - allure-java-commons-test
- allure-jax-rs
- - allure-jbehave
- allure-jbehave5
+ - allure-jooq
- allure-jsonunit
- allure-junit-platform
- allure-junit4
+ - allure-junit4-aspect
- allure-jupiter
- allure-jupiter-assert
- - allure-junit5
- - allure-junit5-assert
- allure-karate
- - allure-okhttp
+ - allure-kotlin-coroutines
+ - allure-kotlin-extensions
+ - allure-model
- allure-okhttp3
- - allure-reader
+ - allure-playwright
- allure-rest-assured
- allure-scalatest
+ - allure-selenium-bidi
- allure-selenide
- allure-servlet-api
- - allure-spock
- allure-spock2
- allure-spring-web
- - allure-test-filter
- allure-testng
validations:
required: true
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 000000000..eb189d888
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,32 @@
+name: Feature request
+description: Suggest a user-facing feature or improvement.
+type: feature
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for suggesting an improvement for Allure Java. Please describe the outcome you need, not only a possible implementation.
+ - type: textarea
+ id: problem
+ attributes:
+ label: What problem should this solve?
+ description: Describe the workflow, limitation, or user need behind the request.
+ validations:
+ required: true
+ - type: textarea
+ id: proposal
+ attributes:
+ label: What would you like to happen?
+ description: Describe the behavior or capability you want Allure Java to provide.
+ validations:
+ required: true
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Alternatives considered
+ description: Share any current workaround or alternative design you have considered.
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: Additional context
+ description: Add examples, links, screenshots, or related issues.
diff --git a/.github/ISSUE_TEMPLATE/task.yml b/.github/ISSUE_TEMPLATE/task.yml
new file mode 100644
index 000000000..7cd649f04
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/task.yml
@@ -0,0 +1,16 @@
+name: Task
+description: Track internal maintenance or repository work.
+type: task
+body:
+ - type: textarea
+ id: goal
+ attributes:
+ label: Goal
+ description: Describe the maintenance, cleanup, or repository task.
+ validations:
+ required: true
+ - type: textarea
+ id: details
+ attributes:
+ label: Details
+ description: Add relevant context, constraints, links, or acceptance criteria.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 240d09840..70c93749e 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,11 +5,11 @@ updates:
schedule:
interval: "daily"
labels:
- - "type:dependencies"
+ - "pr:dependencies"
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "daily"
labels:
- - "type:dependencies"
+ - "pr:dependencies"
diff --git a/.github/labeler.yml b/.github/labeler.yml
deleted file mode 100644
index 367271a00..000000000
--- a/.github/labeler.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-"theme:workflow":
- - ".github/**"
-
-"theme:build":
- - "gradle/**"
- - "build.gradle.kts"
- - "**/build.gradle.kts"
- - "gradle.properties"
- - ".gitignore"
-
-"theme:assertj":
- - "allure-assertj/**"
-
-"theme:attachments":
- - "allure-attachments/**"
-
-"theme:citrus":
- - "allure-citrus/**"
-
-"theme:cucumber-jvm":
- - "allure-cucumber*-jvm/**"
-
-"theme:descriptions-javadoc":
- - "allure-descriptions-javadoc/**"
-
-"theme:httpclient":
- - "allure-httpclient/**"
-
-"theme:model":
- - "allure-model/**"
-
-"theme:core":
- - "allure-java-commons/**"
- - "allure-java-commons-test/**"
- - "allure-test-filter/**"
-
-"theme:jax-rs":
- - "allure-jax-rs/**"
-
-"theme:jbehave":
- - "allure-jbehave*/**"
-
-"theme:jsonunit":
- - "allure-jsonunit/**"
-
-"theme:junit4":
- - "allure-junit4/**"
- - "allure-junit4-aspect/**"
-
-"theme:junit-platform":
- - "allure-jupiter/**"
- - "allure-jupiter-assert/**"
- - "allure-junit-platform/**"
-
-"theme:karate":
- - "allure-karate/**"
-
-"theme:okhttp":
- - "allure-okhttp/**"
- - "allure-okhttp3/**"
-
-"theme:rest-assured":
- - "allure-rest-assured/**"
-
-"theme:scalatest":
- - "allure-scalatest/**"
-
-"theme:selenide":
- - "allure-selenide/**"
-
-"theme:servlet-api":
- - "allure-servlet-api/**"
-
-"theme:spock":
- - "allure-spock/**"
-
-"theme:spring":
- - "allure-spring-web/**"
-
-"theme:testng":
- - "allure-testng/**"
-
-"theme:hamcrest":
- - "allure-hamcrest/**"
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/pull_request_template.md
similarity index 74%
rename from .github/PULL_REQUEST_TEMPLATE.md
rename to .github/pull_request_template.md
index 8178c9b61..4ccdd31e5 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/pull_request_template.md
@@ -1,7 +1,7 @@
### Context
+
#### Checklist
+
- [ ] [Sign Allure CLA][cla]
- [ ] Provide unit tests
-[cla]: https://cla-assistant.io/accept/allure-framework/allure2
+[cla]: https://cla-assistant.io/accept/allure-framework/allure-java
diff --git a/.github/release.yml b/.github/release.yml
index 7c30a5979..7670c3878 100644
--- a/.github/release.yml
+++ b/.github/release.yml
@@ -1,25 +1,28 @@
# release.yml
changelog:
+ exclude:
+ labels:
+ - 'pr:invalid'
categories:
- title: '🚀 New Features'
labels:
- - 'type:new feature'
+ - 'pr:new feature'
- title: '🔬 Improvements'
labels:
- - 'type:improvement'
+ - 'pr:improvement'
- title: '🐞 Bug Fixes'
labels:
- - 'type:bug'
+ - 'pr:bug'
- title: '⬆️ Dependency Updates'
labels:
- - 'type:dependencies'
+ - 'pr:dependencies'
- title: '📖 Documentation improvements'
labels:
- - 'type:documentation'
+ - 'pr:documentation'
- title: '⛔️ Security'
labels:
- - 'type:security'
+ - 'pr:security'
- title: '👻 Internal changes'
labels:
- - 'type:internal'
+ - 'pr:internal'
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 341788f5e..d0e9e7f0e 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,35 +21,54 @@ concurrency:
jobs:
build:
- name: "Build"
+ name: "Build (JDK ${{ matrix.java }})"
runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ java: [17, 25]
env:
- ALLURE_MATRIX_ENV: ubuntu-jdk-21
- ALLURE_TEST_DUMP_NAME: allure-results-test-jdk-21
+ ALLURE_MATRIX_ENV: ubuntu-jdk-${{ matrix.java }}
+ ALLURE_TEST_DUMP_NAME: allure-results-test-jdk-${{ matrix.java }}
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- - uses: actions/setup-node@v6
+ - uses: actions/setup-node@v7
with:
node-version: '20.x'
- name: "Set up JDK"
- uses: actions/setup-java@v5
+ uses: actions/setup-java@v6
with:
distribution: 'zulu'
- java-version: 21
+ java-version: ${{ matrix.java }}
- name: "Setup Gradle"
uses: gradle/actions/setup-gradle@v6
with:
gradle-version: 'wrapper'
+ - name: "Select Gradle task exclusions"
+ shell: bash
+ run: |
+ if [[ "${{ matrix.java }}" == "17" ]]; then
+ higher_java_modules=(
+ ":allure-jooq"
+ ":allure-karate"
+ )
+ excludes=()
+ for module in "${higher_java_modules[@]}"; do
+ excludes+=("-x" "$module:build" "-x" "$module:test")
+ done
+ echo "GRADLE_EXCLUDES=${excludes[*]}" >> "$GITHUB_ENV"
+ fi
+
- name: "Build with Gradle"
- run: ./gradlew build -x test --scan
+ run: ./gradlew build -x test $GRADLE_EXCLUDES --scan
- name: "Run tests with Allure"
if: always()
- run: npx -y allure@3 run --config ./allurerc.mjs --rerun 2 --environment="${{ env.ALLURE_MATRIX_ENV }}" --dump="${{ env.ALLURE_TEST_DUMP_NAME }}" -- ./gradlew --no-build-cache cleanTest test
+ run: npx -y allure@3 run --config ./allurerc.mjs --rerun 2 --environment="${{ env.ALLURE_MATRIX_ENV }}" --dump="${{ env.ALLURE_TEST_DUMP_NAME }}" -- ./gradlew --no-build-cache cleanTest test $GRADLE_EXCLUDES
- name: "Upload Allure test dump"
if: always()
@@ -69,10 +88,13 @@ jobs:
checks: write
env:
ALLURE_SERVICE_TOKEN: ${{ secrets.ALLURE_SERVICE_TOKEN }}
+ ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
+ ALLURE_ENDPOINT: ${{ secrets.ALLURE_ENDPOINT }}
+ ALLURE_PROJECT_ID: ${{ secrets.ALLURE_PROJECT_ID }}
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- - uses: actions/setup-node@v6
+ - uses: actions/setup-node@v7
with:
node-version: '20.x'
diff --git a/.github/workflows/dependency-submission.yml b/.github/workflows/dependency-submission.yml
index d02a1dbee..31faaec6e 100644
--- a/.github/workflows/dependency-submission.yml
+++ b/.github/workflows/dependency-submission.yml
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Generate and submit dependency graph
uses: gradle/actions/dependency-submission@v6
env:
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
deleted file mode 100644
index f49976b59..000000000
--- a/.github/workflows/labeler.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: "Set theme labels"
-
-on:
- - pull_request_target
-
-permissions:
- contents: read
-
-jobs:
- triage:
- runs-on: ubuntu-latest
- permissions:
- pull-requests: write
- steps:
- - uses: actions/labeler@v4
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/labels-verify.yml b/.github/workflows/labels-verify.yml
index 7315a905a..c94a1e441 100644
--- a/.github/workflows/labels-verify.yml
+++ b/.github/workflows/labels-verify.yml
@@ -1,27 +1,61 @@
-name: "Verify type labels"
+name: "Verify PR labels"
on:
- pull_request_target:
- types: [opened, labeled, unlabeled, synchronize]
+ pull_request:
+ types:
+ - opened
+ - reopened
+ - synchronize
+ - ready_for_review
+ - labeled
+ - unlabeled
+ - edited
permissions:
- contents: none
+ contents: read
+ pull-requests: read
+ issues: read
jobs:
triage:
+ name: Require exactly one pr label
runs-on: ubuntu-latest
- permissions:
- pull-requests: read
steps:
- - uses: baev/action-label-verify@main
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- allowed: |
- type:bug
- type:dependencies
- type:improvement
- type:internal
- type:invalid
- type:new feature
- type:security
- type:documentation
+ - name: Validate release notes label
+ env:
+ GH_TOKEN: ${{ github.token }}
+ PR_NUMBER: ${{ github.event.pull_request.number }}
+ shell: bash
+ run: |
+ labels="$(gh api "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/labels" --jq '.[].name')"
+ pr_labels="$(printf '%s\n' "${labels}" | grep '^pr:' || true)"
+
+ if [ -z "${pr_labels}" ]; then
+ count=0
+ else
+ count="$(printf '%s\n' "${pr_labels}" | wc -l | tr -d ' ')"
+ fi
+
+ if [ "${count}" -eq 1 ]; then
+ echo "Found PR release-note label: ${pr_labels}"
+ exit 0
+ fi
+
+ {
+ echo "Pull requests must have exactly one label with the pr: prefix."
+ echo "Found ${count} pr: labels."
+ if [ "${count}" -gt 0 ]; then
+ printf 'Matching labels:\n'
+ printf '%s\n' "${pr_labels}" | sed 's/^/- /'
+ fi
+ echo
+ echo "Available labels on this PR:"
+ if [ -n "${labels}" ]; then
+ printf '%s\n' "${labels}" | sed 's/^/- /'
+ else
+ echo "- Implement this interface when custom code needs to participate in the same integration flow as the built-in Allure adapter components. Use this type through the module that owns it when translating framework execution, result metadata, or attachments into Allure report data. Use this type through the module that owns it when translating framework execution, result metadata, or attachments into Allure report data. Use this type through the module that owns it when translating framework execution, result metadata, or attachments into Allure report data. Use this type through the module that owns it when translating framework execution, result metadata, or attachments into Allure report data. Use this model to carry request metadata and body content from client interceptors to attachment renderers and processors. Use this model to carry response metadata and body content from client interceptors to attachment renderers and processors.](https://allurereport.org "Allure Report")
-
-- Learn more about Allure Report at [https://allurereport.org](https://allurereport.org)
-- 📚 [Documentation](https://allurereport.org/docs/) – discover official documentation for Allure Report
-- ❓ [Questions and Support](https://github.com/orgs/allure-framework/discussions/categories/questions-support) – get help from the team and community
-- 📢 [Official announcements](https://github.com/orgs/allure-framework/discussions/categories/announcements) – stay updated with our latest news and updates
-- 💬 [General Discussion](https://github.com/orgs/allure-framework/discussions/categories/general-discussion) – engage in casual conversations, share insights and ideas with the community
-- 🖥️ [Live Demo](https://demo.allurereport.org/) — explore a live example of Allure Report in action
-
----
-## TestNG
-
-- 🚀 Documentation — https://allurereport.org/docs/testng/
-- 📚 Example project — https://github.com/allure-examples?q=topic%3Atestng
-- ✅ Generate a project in 10 seconds via Allure Start - https://allurereport.org/start/
-
-## JUnit 4
-
-- 🚀 Documentation — work in progress
-- 📚 Example project — https://github.com/allure-examples?q=topic%3Ajunit4
-- ✅ Generate a project in 10 seconds via Allure Start - https://allurereport.org/start/
--
-## JUnit Jupiter (JUnit 5 and 6)
+# Allure Java
-- 🚀 Documentation — https://allurereport.org/docs/junit5/
-- 📚 Example project — https://github.com/allure-examples?q=topic%3Ajunit5
-- ✅ Generate a project in 10 seconds via Allure Start - https://allurereport.org/start/
-- 🧩 Use `io.qameta.allure:allure-jupiter` for new setups. `allure-junit5` remains available as a deprecated relocation coordinate during migration.
-
-## Cucumber JVM
-
-- 🚀 Documentation — https://allurereport.org/docs/cucumberjvm/
-- 📚 Example project — https://github.com/allure-examples?q=cucumber&type=all&language=java
-- ✅ Generate a project in 10 seconds via Allure Start - https://allurereport.org/start/
-
-## Spock
-
-- 🚀 Documentation — https://allurereport.org/docs/spock/
-- 📚 Example project — https://github.com/allure-examples?q=topic%3Aspock
-- ✅ Generate a project in 10 seconds via Allure Start - https://allurereport.org/start/
-
-## Selenide
-
-Listener for Selenide, that logging steps for Allure:
-
-```xml
-
Body
-
- <#t>${data.body}
-
- Headers
- Cookies
- Curl
- FormParams
- Body
-
- <#t>${data.body}
-
-Headers
-Cookies
-Body
-
- <#t>${data.body.size}
-
-Headers
- Cookies
- Curl
-
+ * A listener instance tracks a single condition at a time, so prefer one instance per condition when tests run in + * parallel. Awaitility fires no callback when a non-ignored exception escapes a condition; such an aborted wait + * stays the reporting parent until the same listener starts its next condition, which finalizes the aborted one, + * or until the test ends. + *
* * @see org.awaitility.core.ConditionEvaluationListener * @see Awaitility#setDefaultConditionEvaluationListener(ConditionEvaluationListener) @@ -66,22 +77,15 @@ @SuppressWarnings("unused") public class AllureAwaitilityListener implements ConditionEvaluationListener