Skip to content

Commit 5f48fcc

Browse files
authored
Merge pull request #8 from sridharbandi/feature/axe
Removing dependency on browser logs
2 parents f30a83a + 1b69be3 commit 5f48fcc

File tree

16 files changed

+107
-192
lines changed

16 files changed

+107
-192
lines changed

ReadMe.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@ For maven based project add the below dependency
2121
<dependency>
2222
<groupId>io.github.sridharbandi</groupId>
2323
<artifactId>java-a11y</artifactId>
24-
<version>2.1.2</version>
24+
<version>2.1.3</version>
2525
</dependency>
2626
```
2727
For gradle based project add the below dependency
2828
```
29-
compile 'io.github.sridharbandi:java-a11y:2.1.2'
29+
compile 'io.github.sridharbandi:java-a11y:2.1.3'
3030
```
3131
For non gradle or maven project download the jar from below mentioned link and add it to CLASSPATH for your project
3232

3333
[https://github.com/sridharbandi/Java-a11y/releases](https://github.com/sridharbandi/Java-a11y/releases)
3434

3535
### Getting Started
36-
Make sure to enable logging capabilities to Webdriver. Below is the example for Chromedriver
36+
Make sure to enable logging capabilities to Webdriver is you are using the version `2.1.2` and below. Below is the example for Chromedriver
3737
```java
3838
ChromeOptions chromeOptions = new ChromeOptions();
3939
LoggingPreferences logPrefs = new LoggingPreferences();

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group 'io.github.sridharbandi'
7-
version '2.1.2'
7+
version '2.1.3'
88

99
sourceCompatibility = 1.8
1010
targetCompatibility = 1.8

pom.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>io.github.sridharbandi</groupId>
77
<artifactId>java-a11y</artifactId>
8-
<version>2.1.2</version>
8+
<version>2.1.3</version>
99

1010
<name>Java a11y</name>
1111
<description>Accessibility Automation for Web Apps with Java and Selenium Webdriver</description>
@@ -106,5 +106,12 @@
106106
<version>${mockito.verion}</version>
107107
<scope>test</scope>
108108
</dependency>
109+
<!-- https://mvnrepository.com/artifact/org.json/json -->
110+
<dependency>
111+
<groupId>org.json</groupId>
112+
<artifactId>json</artifactId>
113+
<version>20190722</version>
114+
</dependency>
115+
109116
</dependencies>
110117
</project>

src/main/java/io/github/sridharbandi/Accessibility.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@
2121
*/
2222
package io.github.sridharbandi;
2323

24+
import io.github.sridharbandi.util.Runner;
2425
import io.github.sridharbandi.util.Standard;
2526

2627
public class Accessibility {
28+
public static Runner RUNNER = Runner.HTMLCS;
2729
public static Standard STANDARD = Standard.WCAG2AA;
2830
public static String REPORT_PATH = System.getProperty("user.dir") + "/accessibility";
2931
public static boolean LOG_RESULTS = true;

src/main/java/io/github/sridharbandi/AccessibilityRunner.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,16 @@
2121
*/
2222
package io.github.sridharbandi;
2323

24+
import freemarker.template.Template;
25+
import io.github.sridharbandi.ftl.FtlConfig;
2426
import io.github.sridharbandi.issues.IErrors;
2527
import io.github.sridharbandi.issues.INotices;
2628
import io.github.sridharbandi.issues.IWarnings;
2729
import io.github.sridharbandi.modal.Issue;
2830
import io.github.sridharbandi.modal.Issues;
2931
import io.github.sridharbandi.report.Result;
30-
import io.github.sridharbandi.util.IssueType;
31-
import io.github.sridharbandi.util.SaveJson;
3232
import io.github.sridharbandi.util.DateUtil;
33-
import io.github.sridharbandi.ftl.FtlConfig;
34-
import freemarker.template.Template;
33+
import io.github.sridharbandi.util.SaveJson;
3534
import io.github.sridharbandi.util.Standard;
3635
import org.openqa.selenium.WebDriver;
3736
import org.slf4j.Logger;
@@ -47,7 +46,8 @@ public class AccessibilityRunner extends Result implements IErrors, IWarnings, I
4746

4847
private static Logger LOG = LoggerFactory.getLogger(AccessibilityRunner.class);
4948

50-
private List<Issue> issueList;
49+
private List<Map<String, String>> issueList;
50+
private List<Issue> processedIssues;
5151
private Issues issues;
5252

5353
public AccessibilityRunner(WebDriver driver) {
@@ -60,8 +60,8 @@ public void execute() {
6060

6161
public void execute(String pageName) {
6262
LOG.info("Running Accessibility for {} page", pageName);
63-
executeScript();
64-
issueList = issueList();
63+
issueList = executeScript();
64+
processedIssues = issueList(issueList);
6565
issues = getIssues(pageName);
6666
SaveJson.save(issues, pageName);
6767
}
@@ -71,7 +71,7 @@ public void setStandard(Standard standard) {
7171
}
7272

7373
public List<Issue> getIssueList() {
74-
return issueList;
74+
return processedIssues;
7575
}
7676

7777
public Issues getIssues() {
@@ -91,23 +91,23 @@ private Issues getIssues(String reportName) {
9191
issues.setBrowser(browserName());
9292
issues.setName(reportName.isEmpty() ? pageTitle() : reportName);
9393
issues.setReportID(UUID.randomUUID().toString().replace("-", ""));
94-
issues.setIssues(issueList);
94+
issues.setIssues(processedIssues);
9595
return issues;
9696
}
9797

9898
@Override
9999
public int errorCount() {
100-
return getCount(issueList, IssueType.Error);
100+
return getCount(processedIssues, 1);
101101
}
102102

103103
@Override
104104
public int noticeCount() {
105-
return getCount(issueList, IssueType.Notice);
105+
return getCount(processedIssues, 3);
106106
}
107107

108108
@Override
109109
public int warningCount() {
110-
return getCount(issueList, IssueType.Warning);
110+
return getCount(processedIssues, 2);
111111
}
112112

113113
public void generateHtmlReport() {
@@ -125,11 +125,11 @@ public void generateHtmlReport() {
125125
map.put("errorcount", issues.getErrors());
126126
map.put("warningcount", issues.getWarnings());
127127
map.put("noticecount", issues.getNotices());
128-
List<Issue> errors = issues.getIssues().stream().filter(issue -> issue.getIssueType().equalsIgnoreCase(IssueType.Error.name())).collect(Collectors.toList());
128+
List<Issue> errors = issues.getIssues().stream().filter(issue -> issue.getIssueType() == 1).collect(Collectors.toList());
129129
map.put("errors", errors);
130-
List<Issue> warnings = issues.getIssues().stream().filter(issue -> issue.getIssueType().equalsIgnoreCase(IssueType.Warning.name())).collect(Collectors.toList());
130+
List<Issue> warnings = issues.getIssues().stream().filter(issue -> issue.getIssueType() == 2).collect(Collectors.toList());
131131
map.put("warnings", warnings);
132-
List<Issue> notices = issues.getIssues().stream().filter(issue -> issue.getIssueType().equalsIgnoreCase(IssueType.Notice.name())).collect(Collectors.toList());
132+
List<Issue> notices = issues.getIssues().stream().filter(issue -> issue.getIssueType() == 3).collect(Collectors.toList());
133133
map.put("notices", notices);
134134
save(tmplPage, map, issues.getReportID());
135135
}
@@ -150,9 +150,9 @@ public void generateHtmlReport() {
150150
}
151151

152152

153-
private int getCount(List<Issue> issues, IssueType issueType) {
153+
private int getCount(List<Issue> issues, int issueType) {
154154
List<Issue> filteredIssues = issues.stream()
155-
.filter(issue -> issue.getIssueType().equalsIgnoreCase(issueType.name()))
155+
.filter(issue -> issue.getIssueType() == issueType)
156156
.collect(Collectors.toList());
157157
return filteredIssues.size();
158158
}

src/main/java/io/github/sridharbandi/driver/DriverContext.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
package io.github.sridharbandi.driver;
2323

2424
import io.github.sridharbandi.Accessibility;
25-
import io.github.sridharbandi.htmlcs.HTMLCS;
2625
import io.github.sridharbandi.util.Statik;
2726
import org.openqa.selenium.Capabilities;
2827
import org.openqa.selenium.JavascriptExecutor;
@@ -31,9 +30,10 @@
3130
import org.openqa.selenium.support.ui.ExpectedCondition;
3231
import org.openqa.selenium.support.ui.WebDriverWait;
3332

33+
import java.util.*;
34+
3435
public class DriverContext implements IDriverContext {
3536

36-
private HTMLCS htmlcs = HTMLCS.getInstance();
3737
private JavascriptExecutor javascriptExecutor;
3838
private WebDriver driver;
3939

@@ -58,16 +58,25 @@ public long viewPortHeight() {
5858
}
5959

6060
@Override
61-
public void executeScript() {
61+
public List<Map<String, String>> executeScript() {
62+
waitForLoad();
63+
javascriptExecutor.executeScript(Statik.HTMLCS_SCRIPT);
6264
waitForLoad();
63-
javascriptExecutor.executeScript(htmlcs.getHTMLCS());
6465
javascriptExecutor.executeScript(String.format(Statik.RUNNER, Accessibility.STANDARD.name()));
66+
waitForLoad();
67+
List<Map<String, String>> issuesList = (ArrayList<Map<String, String>>) javascriptExecutor.executeScript(Statik.HTMLCS_RESULTS);
68+
return issuesList;
6569
}
6670

6771
private void waitForLoad() {
6872
ExpectedCondition<Boolean> pageLoadCondition = webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete");
6973
WebDriverWait wait = new WebDriverWait(driver, 30);
7074
wait.until(pageLoadCondition);
75+
try {
76+
Thread.sleep(1000);
77+
} catch (InterruptedException e) {
78+
e.printStackTrace();
79+
}
7180
}
7281

7382
@Override

src/main/java/io/github/sridharbandi/driver/IDriverContext.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@
2121
*/
2222
package io.github.sridharbandi.driver;
2323

24+
import java.util.List;
25+
import java.util.Map;
26+
2427
public interface IDriverContext {
2528

2629
String pageTitle();
2730
long viewPortWidth();
2831
long viewPortHeight();
29-
void executeScript();
32+
List<Map<String, String>> executeScript();
3033
String viewPort();
3134
String url();
3235
String device();

src/main/java/io/github/sridharbandi/htmlcs/HTMLCS.java

Lines changed: 0 additions & 60 deletions
This file was deleted.

src/main/java/io/github/sridharbandi/modal/Issue.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import java.util.List;
2525

2626
public class Issue {
27-
private String issueType;
27+
private Long issueType;
2828
private String issueCode;
2929
private List<String> issueTechniques;
3030
private String issueTag;
@@ -40,11 +40,11 @@ public void setIssueTechniques(List<String> issueTechniques) {
4040
this.issueTechniques = issueTechniques;
4141
}
4242

43-
public String getIssueType() {
43+
public Long getIssueType() {
4444
return issueType;
4545
}
4646

47-
public void setIssueType(String issueType) {
47+
public void setIssueType(Long issueType) {
4848
this.issueType = issueType;
4949
}
5050

src/main/java/io/github/sridharbandi/report/Result.java

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,14 @@
2121
*/
2222
package io.github.sridharbandi.report;
2323

24+
import com.fasterxml.jackson.databind.ObjectMapper;
2425
import io.github.sridharbandi.modal.Issue;
25-
import org.apache.commons.text.StringEscapeUtils;
2626
import org.openqa.selenium.WebDriver;
27-
import org.openqa.selenium.logging.LogEntries;
28-
import org.openqa.selenium.logging.LogEntry;
29-
import org.openqa.selenium.logging.LogType;
3027

3128
import java.util.Arrays;
3229
import java.util.LinkedList;
3330
import java.util.List;
31+
import java.util.Map;
3432
import java.util.regex.Matcher;
3533
import java.util.regex.Pattern;
3634
import java.util.stream.Collectors;
@@ -43,26 +41,13 @@ public Result(WebDriver driver) {
4341
this.driver = driver;
4442
}
4543

46-
protected List<Issue> issueList() {
47-
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
48-
return logEntries.getAll().stream()
49-
.map(LogEntry::getMessage)
50-
.filter(str -> str.trim().contains("HTMLCS"))
51-
.filter(str -> !str.endsWith("\"done\""))
52-
.map(str -> str.split("HTMLCS\\]")[1])
53-
.map(str -> str.substring(0, str.length() - 1))
54-
.map(issue -> {
55-
Issue _issue = new Issue();
56-
String[] arrIssue = issue.split("\\|");
57-
_issue.setIssueType(arrIssue[0].trim());
58-
_issue.setIssueCode(arrIssue[1]);
59-
_issue.setIssueTechniques(getIssueTechniques(arrIssue[1]));
60-
_issue.setIssueTag(arrIssue[2]);
61-
_issue.setIssueId(arrIssue[3]);
62-
_issue.setIssueMsg(arrIssue[4]);
63-
_issue.setIssueElement(arrIssue.length < 6 ? "" : StringEscapeUtils.unescapeJava(arrIssue[5]));
64-
return _issue;
65-
}).collect(Collectors.toList());
44+
protected List<Issue> issueList(List<Map<String, String>> issueList) {
45+
return issueList.stream().map(entry -> {
46+
ObjectMapper objectMapper = new ObjectMapper();
47+
Issue issue = objectMapper.convertValue(entry, Issue.class);
48+
issue.setIssueTechniques(getIssueTechniques(issue.getIssueCode()));
49+
return issue;
50+
}).collect(Collectors.toList());
6651
}
6752

6853
protected List<String> getIssueTechniques(String issueCode) {

0 commit comments

Comments
 (0)