Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions src/main/java/org/keycloak/gh/bot/ReportFlakyTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,10 @@ void onCompleted(@WorkflowRun.Completed GHEventPayload.WorkflowRun workflowRunEv
public List<FlakyJob> findFlakyJobs(GHWorkflowRun workflowRun) throws IOException {
List<FlakyJob> allFlakyJobs = new LinkedList<>();

PagedIterator<GHArtifact> iterator = workflowRun.listArtifacts().iterator();
while (iterator.hasNext()) {
GHArtifact ghArtifact = iterator.next();
if (ghArtifact.getName().startsWith("flaky-tests-")) {
FlakyJob flakyJob = ghArtifact.download(inputStream -> FlakyJobParser.parse(inputStream));
for (GHArtifact ghArtifact : workflowRun.listArtifacts()) {
if (ghArtifact.getName().startsWith("flaky-tests-")
|| ghArtifact.getName().endsWith("playwright-report-chromium")) {
FlakyJob flakyJob = ghArtifact.download(FlakyJobParser::parse);
flakyJob.setWorkflow(workflowRun.getName());
allFlakyJobs.add(flakyJob);
}
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/org/keycloak/gh/bot/utils/FlakyJobParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ public static FlakyJob parse(InputStream is) {
flakyJob.setJobUrl(properties.getProperty("job_url"));
flakyJob.setPr(properties.getProperty("pr"));
flakyJob.setPrUrl(properties.getProperty("pr_url"));
} else if (ze.getName().matches("results.xml")) {
SAXParser saxParser = saxParserFactory.newSAXParser();
saxParser.parse(CloseShieldInputStream.wrap(zipInputStream), flakyTestHandler);
}
}
} catch (Exception e) {
Expand Down Expand Up @@ -69,6 +72,9 @@ public void startElement(String uri, String localName, String qName, Attributes
case "stackTrace":
currentStackTrace = new StringBuilder();
break;
case "system-out":
currentStackTrace = new StringBuilder();
break;
}
}

Expand All @@ -86,6 +92,10 @@ public void endElement(String uri, String localName, String qName) {
currentFlakyTest.addFailure(StringUtils.trimLines(currentStackTrace.toString(), FAILURE_MAX_LINES, true));
currentStackTrace = null;
break;
case "system-out":
currentFlakyTest.addFailure(currentStackTrace.toString());
currentStackTrace = null;
break;
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/test/java/org/keycloak/gh/bot/ReportFlakyTestsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,12 @@ void parseFlakySurefireReports() {

assertThat(flakyTests.get(0).getClassName(), equalTo("org.keycloak.testsuite.model.FlakyTest"));
assertThat(flakyTests.get(0).getMethodName(), equalTo("flakyErrorTest"));
assertThat(flakyTests.get(0).getFailures(), hasSize(1));
assertThat(flakyTests.get(0).getFailures(), hasSize(2));
assertThat(flakyTests.get(0).getFailures().get(0), containsString("java.lang.RuntimeException: Flaky runtime exception"));

assertThat(flakyTests.get(1).getClassName(), equalTo("org.keycloak.testsuite.model.FlakyTest"));
assertThat(flakyTests.get(1).getMethodName(), equalTo("flakyFailureTest"));
assertThat(flakyTests.get(1).getFailures(), hasSize(1));
assertThat(flakyTests.get(1).getFailures(), hasSize(2));
assertThat(flakyTests.get(1).getFailures().get(0), containsString("java.lang.AssertionError"));
assertThat(flakyTests.get(1).getFailures().get(0), containsString("at org.junit.Assert.fail(Assert.java:87)"));

Expand Down
13 changes: 13 additions & 0 deletions src/test/java/org/keycloak/gh/bot/utils/FlakyJobParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,19 @@ public void testPush() throws IOException {
"\tat playground.stianst.github.io.MyOtherFlakyTest.otherFlaky(MyOtherFlakyTest.java:4)", true, 1);
}

@Test
public void testPlaywrightFlaky() throws IOException {
InputStream is = FlakyJobParserTest.class.getResourceAsStream("admin-ui-playwright-report-chromium.zip");
FlakyJob flakyJob = FlakyJobParser.parse(is);
flakyJob.setWorkflow("Keycloak CI");

List<FlakyTest> flakyTests = flakyJob.getFlakyTests();

assertEquals(4, flakyTests.size());
assertFlaky(flakyTests.get(0), "user-federation/kerberos.spec.ts", "User Fed Kerberos tests › Edit Kerberos provider › Should edit existing Kerberos provider and cancel",
"[[ATTACHMENT|../test-results/user-federation-kerberos-U-710d8-erberos-provider-and-cancel-chromium/error-context.md]]", true, 1);
}

private void assertFlaky(FlakyTest flakyTest, String expectedClassName, String expectedMethodName, String expectedFailure, boolean startsWith, int expectedFailureRepeats) throws IOException {
assertEquals(expectedClassName, flakyTest.getClassName());
assertEquals(expectedMethodName, flakyTest.getMethodName());
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## user-federation/kerberos.spec.ts#User Fed Kerberos tests › Edit Kerberos provider › Should edit existing Kerberos provider and cancel
[Keycloak CI - null](null)

```
[[ATTACHMENT|../test-results/user-federation-kerberos-U-710d8-erberos-provider-and-cancel-chromium/error-context.md]]

[[ATTACHMENT|../test-results/user-federation-kerberos-U-710d8-erberos-provider-and-cancel-chromium-retry1/trace.zip]]
```