Skip to content

Commit

Permalink
Merge pull request #8 from sridharbandi/feature/axe
Browse files Browse the repository at this point in the history
Removing dependency on browser logs
  • Loading branch information
sridharbandi committed Apr 7, 2020
2 parents f30a83a + 1b69be3 commit 5f48fcc
Show file tree
Hide file tree
Showing 16 changed files with 107 additions and 192 deletions.
6 changes: 3 additions & 3 deletions ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@ For maven based project add the below dependency
<dependency>
<groupId>io.github.sridharbandi</groupId>
<artifactId>java-a11y</artifactId>
<version>2.1.2</version>
<version>2.1.3</version>
</dependency>
```
For gradle based project add the below dependency
```
compile 'io.github.sridharbandi:java-a11y:2.1.2'
compile 'io.github.sridharbandi:java-a11y:2.1.3'
```
For non gradle or maven project download the jar from below mentioned link and add it to CLASSPATH for your project

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

### Getting Started
Make sure to enable logging capabilities to Webdriver. Below is the example for Chromedriver
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
```java
ChromeOptions chromeOptions = new ChromeOptions();
LoggingPreferences logPrefs = new LoggingPreferences();
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

group 'io.github.sridharbandi'
version '2.1.2'
version '2.1.3'

sourceCompatibility = 1.8
targetCompatibility = 1.8
Expand Down
9 changes: 8 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.sridharbandi</groupId>
<artifactId>java-a11y</artifactId>
<version>2.1.2</version>
<version>2.1.3</version>

<name>Java a11y</name>
<description>Accessibility Automation for Web Apps with Java and Selenium Webdriver</description>
Expand Down Expand Up @@ -106,5 +106,12 @@
<version>${mockito.verion}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>

</dependencies>
</project>
2 changes: 2 additions & 0 deletions src/main/java/io/github/sridharbandi/Accessibility.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@
*/
package io.github.sridharbandi;

import io.github.sridharbandi.util.Runner;
import io.github.sridharbandi.util.Standard;

public class Accessibility {
public static Runner RUNNER = Runner.HTMLCS;
public static Standard STANDARD = Standard.WCAG2AA;
public static String REPORT_PATH = System.getProperty("user.dir") + "/accessibility";
public static boolean LOG_RESULTS = true;
Expand Down
34 changes: 17 additions & 17 deletions src/main/java/io/github/sridharbandi/AccessibilityRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,16 @@
*/
package io.github.sridharbandi;

import freemarker.template.Template;
import io.github.sridharbandi.ftl.FtlConfig;
import io.github.sridharbandi.issues.IErrors;
import io.github.sridharbandi.issues.INotices;
import io.github.sridharbandi.issues.IWarnings;
import io.github.sridharbandi.modal.Issue;
import io.github.sridharbandi.modal.Issues;
import io.github.sridharbandi.report.Result;
import io.github.sridharbandi.util.IssueType;
import io.github.sridharbandi.util.SaveJson;
import io.github.sridharbandi.util.DateUtil;
import io.github.sridharbandi.ftl.FtlConfig;
import freemarker.template.Template;
import io.github.sridharbandi.util.SaveJson;
import io.github.sridharbandi.util.Standard;
import org.openqa.selenium.WebDriver;
import org.slf4j.Logger;
Expand All @@ -47,7 +46,8 @@ public class AccessibilityRunner extends Result implements IErrors, IWarnings, I

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

private List<Issue> issueList;
private List<Map<String, String>> issueList;
private List<Issue> processedIssues;
private Issues issues;

public AccessibilityRunner(WebDriver driver) {
Expand All @@ -60,8 +60,8 @@ public void execute() {

public void execute(String pageName) {
LOG.info("Running Accessibility for {} page", pageName);
executeScript();
issueList = issueList();
issueList = executeScript();
processedIssues = issueList(issueList);
issues = getIssues(pageName);
SaveJson.save(issues, pageName);
}
Expand All @@ -71,7 +71,7 @@ public void setStandard(Standard standard) {
}

public List<Issue> getIssueList() {
return issueList;
return processedIssues;
}

public Issues getIssues() {
Expand All @@ -91,23 +91,23 @@ private Issues getIssues(String reportName) {
issues.setBrowser(browserName());
issues.setName(reportName.isEmpty() ? pageTitle() : reportName);
issues.setReportID(UUID.randomUUID().toString().replace("-", ""));
issues.setIssues(issueList);
issues.setIssues(processedIssues);
return issues;
}

@Override
public int errorCount() {
return getCount(issueList, IssueType.Error);
return getCount(processedIssues, 1);
}

@Override
public int noticeCount() {
return getCount(issueList, IssueType.Notice);
return getCount(processedIssues, 3);
}

@Override
public int warningCount() {
return getCount(issueList, IssueType.Warning);
return getCount(processedIssues, 2);
}

public void generateHtmlReport() {
Expand All @@ -125,11 +125,11 @@ public void generateHtmlReport() {
map.put("errorcount", issues.getErrors());
map.put("warningcount", issues.getWarnings());
map.put("noticecount", issues.getNotices());
List<Issue> errors = issues.getIssues().stream().filter(issue -> issue.getIssueType().equalsIgnoreCase(IssueType.Error.name())).collect(Collectors.toList());
List<Issue> errors = issues.getIssues().stream().filter(issue -> issue.getIssueType() == 1).collect(Collectors.toList());
map.put("errors", errors);
List<Issue> warnings = issues.getIssues().stream().filter(issue -> issue.getIssueType().equalsIgnoreCase(IssueType.Warning.name())).collect(Collectors.toList());
List<Issue> warnings = issues.getIssues().stream().filter(issue -> issue.getIssueType() == 2).collect(Collectors.toList());
map.put("warnings", warnings);
List<Issue> notices = issues.getIssues().stream().filter(issue -> issue.getIssueType().equalsIgnoreCase(IssueType.Notice.name())).collect(Collectors.toList());
List<Issue> notices = issues.getIssues().stream().filter(issue -> issue.getIssueType() == 3).collect(Collectors.toList());
map.put("notices", notices);
save(tmplPage, map, issues.getReportID());
}
Expand All @@ -150,9 +150,9 @@ public void generateHtmlReport() {
}


private int getCount(List<Issue> issues, IssueType issueType) {
private int getCount(List<Issue> issues, int issueType) {
List<Issue> filteredIssues = issues.stream()
.filter(issue -> issue.getIssueType().equalsIgnoreCase(issueType.name()))
.filter(issue -> issue.getIssueType() == issueType)
.collect(Collectors.toList());
return filteredIssues.size();
}
Expand Down
17 changes: 13 additions & 4 deletions src/main/java/io/github/sridharbandi/driver/DriverContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
package io.github.sridharbandi.driver;

import io.github.sridharbandi.Accessibility;
import io.github.sridharbandi.htmlcs.HTMLCS;
import io.github.sridharbandi.util.Statik;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.JavascriptExecutor;
Expand All @@ -31,9 +30,10 @@
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.util.*;

public class DriverContext implements IDriverContext {

private HTMLCS htmlcs = HTMLCS.getInstance();
private JavascriptExecutor javascriptExecutor;
private WebDriver driver;

Expand All @@ -58,16 +58,25 @@ public long viewPortHeight() {
}

@Override
public void executeScript() {
public List<Map<String, String>> executeScript() {
waitForLoad();
javascriptExecutor.executeScript(Statik.HTMLCS_SCRIPT);
waitForLoad();
javascriptExecutor.executeScript(htmlcs.getHTMLCS());
javascriptExecutor.executeScript(String.format(Statik.RUNNER, Accessibility.STANDARD.name()));
waitForLoad();
List<Map<String, String>> issuesList = (ArrayList<Map<String, String>>) javascriptExecutor.executeScript(Statik.HTMLCS_RESULTS);
return issuesList;
}

private void waitForLoad() {
ExpectedCondition<Boolean> pageLoadCondition = webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete");
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(pageLoadCondition);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,15 @@
*/
package io.github.sridharbandi.driver;

import java.util.List;
import java.util.Map;

public interface IDriverContext {

String pageTitle();
long viewPortWidth();
long viewPortHeight();
void executeScript();
List<Map<String, String>> executeScript();
String viewPort();
String url();
String device();
Expand Down
60 changes: 0 additions & 60 deletions src/main/java/io/github/sridharbandi/htmlcs/HTMLCS.java

This file was deleted.

6 changes: 3 additions & 3 deletions src/main/java/io/github/sridharbandi/modal/Issue.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.util.List;

public class Issue {
private String issueType;
private Long issueType;
private String issueCode;
private List<String> issueTechniques;
private String issueTag;
Expand All @@ -40,11 +40,11 @@ public void setIssueTechniques(List<String> issueTechniques) {
this.issueTechniques = issueTechniques;
}

public String getIssueType() {
public Long getIssueType() {
return issueType;
}

public void setIssueType(String issueType) {
public void setIssueType(Long issueType) {
this.issueType = issueType;
}

Expand Down
33 changes: 9 additions & 24 deletions src/main/java/io/github/sridharbandi/report/Result.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,14 @@
*/
package io.github.sridharbandi.report;

import com.fasterxml.jackson.databind.ObjectMapper;
import io.github.sridharbandi.modal.Issue;
import org.apache.commons.text.StringEscapeUtils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogEntry;
import org.openqa.selenium.logging.LogType;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
Expand All @@ -43,26 +41,13 @@ public Result(WebDriver driver) {
this.driver = driver;
}

protected List<Issue> issueList() {
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
return logEntries.getAll().stream()
.map(LogEntry::getMessage)
.filter(str -> str.trim().contains("HTMLCS"))
.filter(str -> !str.endsWith("\"done\""))
.map(str -> str.split("HTMLCS\\]")[1])
.map(str -> str.substring(0, str.length() - 1))
.map(issue -> {
Issue _issue = new Issue();
String[] arrIssue = issue.split("\\|");
_issue.setIssueType(arrIssue[0].trim());
_issue.setIssueCode(arrIssue[1]);
_issue.setIssueTechniques(getIssueTechniques(arrIssue[1]));
_issue.setIssueTag(arrIssue[2]);
_issue.setIssueId(arrIssue[3]);
_issue.setIssueMsg(arrIssue[4]);
_issue.setIssueElement(arrIssue.length < 6 ? "" : StringEscapeUtils.unescapeJava(arrIssue[5]));
return _issue;
}).collect(Collectors.toList());
protected List<Issue> issueList(List<Map<String, String>> issueList) {
return issueList.stream().map(entry -> {
ObjectMapper objectMapper = new ObjectMapper();
Issue issue = objectMapper.convertValue(entry, Issue.class);
issue.setIssueTechniques(getIssueTechniques(issue.getIssueCode()));
return issue;
}).collect(Collectors.toList());
}

protected List<String> getIssueTechniques(String issueCode) {
Expand Down
Loading

0 comments on commit 5f48fcc

Please sign in to comment.