Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 45d1730

Browse filesBrowse files
authored
add severity annotation (fixes allure-framework#10, via allure-framework#21)
1 parent 69da339 commit 45d1730
Copy full SHA for 45d1730

10 files changed

+174-1Lines changed: 174 additions & 1 deletion

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎allure-java-commons/src/main/java/io/qameta/allure/ResultsUtils.java‎

Copy file name to clipboardExpand all lines: allure-java-commons/src/main/java/io/qameta/allure/ResultsUtils.java
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ public final class ResultsUtils {
3939
throw new IllegalStateException("Do not instance");
4040
}
4141

42+
public static Label createLabel(Severity severity) {
43+
return new Label().withName("severity").withValue(severity.value().value());
44+
}
45+
4246
public static Label createLabel(Story story) {
4347
return new Label().withName("story").withValue(story.value());
4448
}
Collapse file
+23Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.qameta.allure;
2+
3+
import java.lang.annotation.Documented;
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Inherited;
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.RetentionPolicy;
8+
import java.lang.annotation.Target;
9+
10+
/**
11+
* Use the annotation to specify severity for the test. Can be
12+
* placed on test class level to specify the default severity for
13+
* all the tests.
14+
*/
15+
@Documented
16+
@Inherited
17+
@Retention(RetentionPolicy.RUNTIME)
18+
@Target({ElementType.METHOD, ElementType.TYPE})
19+
public @interface Severity {
20+
21+
SeverityLevel value();
22+
23+
}
Collapse file
+23Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.qameta.allure;
2+
3+
/**
4+
* @author charlie (Dmitry Baev).
5+
*/
6+
public enum SeverityLevel {
7+
8+
BLOCKER("blocker"),
9+
CRITICAL("critical"),
10+
NORMAL("normal"),
11+
MINOR("minor"),
12+
TRIVIAL("trivial");
13+
14+
private final String value;
15+
16+
SeverityLevel(String v) {
17+
value = v;
18+
}
19+
20+
public String value() {
21+
return value;
22+
}
23+
}
Collapse file

‎allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java‎

Copy file name to clipboardExpand all lines: allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java
+20-1Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import io.qameta.allure.Flaky;
88
import io.qameta.allure.Muted;
99
import io.qameta.allure.ResultsUtils;
10+
import io.qameta.allure.Severity;
1011
import io.qameta.allure.Story;
1112
import io.qameta.allure.model.FixtureResult;
1213
import io.qameta.allure.model.Label;
@@ -376,7 +377,8 @@ private List<Label> getLabels(ITestResult result) {
376377
getAnnotationsOnClass(result, Feature.class).stream().map(ResultsUtils::createLabel),
377378
getAnnotationsOnMethod(result, Feature.class).stream().map(ResultsUtils::createLabel),
378379
getAnnotationsOnClass(result, Story.class).stream().map(ResultsUtils::createLabel),
379-
getAnnotationsOnMethod(result, Story.class).stream().map(ResultsUtils::createLabel)
380+
getAnnotationsOnMethod(result, Story.class).stream().map(ResultsUtils::createLabel),
381+
getSeverity(result)
380382
).reduce(Stream::concat).orElseGet(Stream::empty).collect(Collectors.toList());
381383
}
382384

@@ -391,6 +393,23 @@ private List<Link> getLinks(ITestResult result) {
391393
).reduce(Stream::concat).orElseGet(Stream::empty).collect(Collectors.toList());
392394
}
393395

396+
private Stream<Label> getSeverity(ITestResult result) {
397+
Optional<Label> methodSeverity = getAnnotationsOnMethod(result, Severity.class).stream()
398+
.map(ResultsUtils::createLabel)
399+
.findAny();
400+
if (methodSeverity.isPresent()) {
401+
return Stream.of(methodSeverity.get());
402+
}
403+
404+
Optional<Label> classSeverity = getAnnotationsOnClass(result, Severity.class).stream()
405+
.map(ResultsUtils::createLabel)
406+
.findAny();
407+
if (classSeverity.isPresent()) {
408+
return Stream.of(classSeverity.get());
409+
}
410+
return Stream.empty();
411+
}
412+
394413
private boolean isFlaky(ITestResult result) {
395414
return hasAnnotation(result, Flaky.class);
396415
}
Collapse file
+21Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.qameta.allure.samples;
2+
3+
import io.qameta.allure.Severity;
4+
import io.qameta.allure.SeverityLevel;
5+
import org.testng.annotations.Test;
6+
7+
/**
8+
* @author charlie (Dmitry Baev).
9+
*/
10+
@Severity(SeverityLevel.MINOR)
11+
public class SeverityClassTest {
12+
13+
@Test
14+
@Severity(SeverityLevel.BLOCKER)
15+
public void testWithSeverity() throws Exception {
16+
}
17+
18+
@Test
19+
public void testWithClassSeverity() throws Exception {
20+
}
21+
}
Collapse file
+21Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.qameta.allure.samples;
2+
3+
import io.qameta.allure.Severity;
4+
import io.qameta.allure.SeverityLevel;
5+
6+
/**
7+
* @author charlie (Dmitry Baev).
8+
*/
9+
public class SeverityClassTestInherited extends SeverityClassTest {
10+
11+
@Override
12+
public void testWithSeverity() throws Exception {
13+
super.testWithSeverity();
14+
}
15+
16+
@Override
17+
@Severity(SeverityLevel.NORMAL)
18+
public void testWithClassSeverity() throws Exception {
19+
super.testWithClassSeverity();
20+
}
21+
}
Collapse file
+20Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.qameta.allure.samples;
2+
3+
import io.qameta.allure.Severity;
4+
import io.qameta.allure.SeverityLevel;
5+
import org.testng.annotations.Test;
6+
7+
/**
8+
* @author charlie (Dmitry Baev).
9+
*/
10+
public class SeverityMethodTest {
11+
12+
@Test
13+
@Severity(SeverityLevel.CRITICAL)
14+
public void testWithSeverity() throws Exception {
15+
}
16+
17+
@Test
18+
public void testWithoutSeverity() throws Exception {
19+
}
20+
}
Collapse file
+17Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.qameta.allure.samples;
2+
3+
/**
4+
* @author charlie (Dmitry Baev).
5+
*/
6+
public class SeverityMethodTestInherited extends SeverityMethodTest {
7+
8+
@Override
9+
public void testWithSeverity() throws Exception {
10+
super.testWithSeverity();
11+
}
12+
13+
@Override
14+
public void testWithoutSeverity() throws Exception {
15+
super.testWithoutSeverity();
16+
}
17+
}
Collapse file

‎allure-testng/src/test/java/io/qameta/allure/test/FeatureCombinationsTest.java‎

Copy file name to clipboardExpand all lines: allure-testng/src/test/java/io/qameta/allure/test/FeatureCombinationsTest.java
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,18 @@ public void retryTest() throws Exception {
408408
.hasSize(2);
409409
}
410410

411+
@Test
412+
public void severityTest() throws Exception {
413+
runTestNgSuites("suites/severity.xml");
414+
List<TestResult> testResults = results.getTestResults();
415+
assertThat(testResults)
416+
.hasSize(8)
417+
.flatExtracting(TestResult::getLabels)
418+
.filteredOn(label -> "severity".equals(label.getName()))
419+
.extracting(Label::getValue)
420+
.containsExactly("critical", "critical", "minor", "blocker", "minor", "blocker");
421+
}
422+
411423
private Predicate<TestResult> hasLinks() {
412424
return testResult -> !testResult.getLinks().isEmpty();
413425
}
Collapse file
+13Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
3+
4+
<suite name="Severity suite">
5+
<test name="Severity tests">
6+
<classes>
7+
<class name="io.qameta.allure.samples.SeverityMethodTest"/>
8+
<class name="io.qameta.allure.samples.SeverityMethodTestInherited"/>
9+
<class name="io.qameta.allure.samples.SeverityClassTest"/>
10+
<class name="io.qameta.allure.samples.SeverityClassTestInherited"/>
11+
</classes>
12+
</test>
13+
</suite>

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.