Skip to content

Commit da40286

Browse files
authored
Merge pull request #24 from sridharbandi/feature/page_stats
Return Page Stats and custom page title
2 parents e61a3bd + aa5f7b2 commit da40286

File tree

12 files changed

+53
-34
lines changed

12 files changed

+53
-34
lines changed

ReadMe.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ For maven based project add the below dependency
2929
<dependency>
3030
<groupId>io.github.sridharbandi</groupId>
3131
<artifactId>java-a11y</artifactId>
32-
<version>3.0.1</version>
32+
<version>3.0.2</version>
3333
</dependency>
3434
```
3535
For gradle based project add the below dependency
3636
```
37-
compile 'io.github.sridharbandi:java-a11y:3.0.1'
37+
compile 'io.github.sridharbandi:java-a11y:3.0.2'
3838
```
3939
For non gradle/maven project download the jar from below mentioned link and add it to CLASSPATH for your project
4040

@@ -95,7 +95,7 @@ public class Example {
9595
}
9696

9797
@AfterEach
98-
public void tearDown() throws TemplateException, IOException, URISyntaxException {
98+
public void tearDown() throws IOException {
9999
htmlCsRunner.execute();
100100
driver.quit();
101101
}
@@ -188,7 +188,7 @@ public class Example {
188188
}
189189

190190
@AfterEach
191-
public void tearDown() throws TemplateException, IOException, URISyntaxException {
191+
public void tearDown() throws IOException {
192192
axeRunner.execute();
193193
driver.quit();
194194
}

pom.xml

Lines changed: 1 addition & 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>3.0.1</version>
8+
<version>3.0.2</version>
99

1010
<name>Java a11y</name>
1111
<description>Accessibility Automation for Web Apps with Java and Selenium Webdriver</description>

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
package io.github.sridharbandi;
22

3-
import freemarker.template.TemplateException;
43
import io.github.sridharbandi.a11y.Engine;
54
import io.github.sridharbandi.modal.axe.Issues;
5+
import io.github.sridharbandi.modal.htmlcs.Params;
66
import io.github.sridharbandi.util.A11y;
77
import org.openqa.selenium.WebDriver;
88

99
import java.io.IOException;
10-
import java.net.URISyntaxException;
1110

1211
public class AxeRunner implements IRunner {
1312

1413
private A11y a11y;
14+
private Params params;
1515

1616
public AxeRunner(WebDriver driver) {
1717
a11y = new A11y(driver);
18+
params = new Params();
1819
}
1920

21+
public AxeRunner setPageTile(String pageTitle) {
22+
params.setPageTitle(pageTitle);
23+
return this;
24+
}
2025
@Override
21-
public void execute() throws IOException, URISyntaxException, TemplateException {
22-
a11y.execute(Engine.AXE, null);
26+
public Issues execute() throws IOException {
27+
return (Issues) a11y.execute(Engine.AXE, params);
2328
}
2429

2530

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.github.sridharbandi;
22

3-
import freemarker.template.TemplateException;
43
import io.github.sridharbandi.a11y.Engine;
54
import io.github.sridharbandi.a11y.HTMLCS;
65
import io.github.sridharbandi.modal.htmlcs.Issues;
@@ -9,7 +8,6 @@
98
import org.openqa.selenium.WebDriver;
109

1110
import java.io.IOException;
12-
import java.net.URISyntaxException;
1311
import java.util.Objects;
1412

1513
public class HtmlCsRunner implements IRunner {
@@ -24,21 +22,27 @@ public HtmlCsRunner(WebDriver driver) {
2422
params = new Params();
2523
}
2624

27-
public void setStandard(HTMLCS standard) {
25+
public HtmlCsRunner setStandard(HTMLCS standard) {
2826
this.standard = standard;
27+
return this;
2928
}
3029

31-
public void setIgnoreCodes(String[] codes){
30+
public HtmlCsRunner setIgnoreCodes(String[] codes) {
3231
this.codes = codes;
32+
return this;
3333
}
3434

35+
public HtmlCsRunner setPageTile(String pageTitle) {
36+
params.setPageTitle(pageTitle);
37+
return this;
38+
}
3539

3640
@Override
37-
public void execute() throws IOException, URISyntaxException, TemplateException {
41+
public Issues execute() throws IOException {
3842
String stdrd = Objects.isNull(standard) ? HTMLCS.WCAG2AA.name() : standard.name();
3943
params.setStandard(stdrd);
4044
params.setIgnoreCodes(codes);
41-
a11y.execute(Engine.HTMLCS, params);
45+
return (Issues) a11y.execute(Engine.HTMLCS, params);
4246
}
4347

4448
public void generateHtmlReport() throws IOException {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import java.util.Map;
1515

1616
public interface IRunner {
17-
void execute() throws IOException, URISyntaxException, TemplateException;
17+
Object execute() throws IOException;
1818

1919
default void generateHtmlReport(A11y a11y, Engine engine, Class<?> clazz) throws IOException {
2020
Template tmplIndex = FtlConfig.getInstance().getTemplate(engine.name().toLowerCase() + "/index.ftl");

src/main/java/io/github/sridharbandi/ftl/FtlConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public FtlConfig() {
2323
cfg.setClassLoaderForTemplateLoading(this.getClass().getClassLoader(), TEMPLATE_DIR);
2424
cfg.setDefaultEncoding(ENCODING);
2525
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
26-
cfg.setSharedVariable("random", new BeansWrapperBuilder(Configuration.VERSION_2_3_30).build().getStaticModels());
26+
cfg.setSharedVariable("random", new BeansWrapperBuilder(Configuration.VERSION_2_3_31).build().getStaticModels());
2727
cfg.setLogTemplateExceptions(false);
2828
cfg.setWrapUncheckedExceptions(true);
2929
cfg.setFallbackOnNullLoopVariable(false);

src/main/java/io/github/sridharbandi/modal/htmlcs/Params.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ public class Params {
44

55
String standard;
66
String[] ignoreCodes;
7+
String pageTitle;
78

89
public String getStandard() {
910
return standard;
@@ -20,4 +21,12 @@ public String[] getIgnoreCodes() {
2021
public void setIgnoreCodes(String[] ignoreCodes) {
2122
this.ignoreCodes = ignoreCodes;
2223
}
24+
25+
public String getPageTitle() {
26+
return pageTitle;
27+
}
28+
29+
public void setPageTitle(String pageTitle) {
30+
this.pageTitle = pageTitle;
31+
}
2332
}

src/main/java/io/github/sridharbandi/util/A11y.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import freemarker.template.Template;
55
import freemarker.template.TemplateException;
66
import io.github.sridharbandi.a11y.Engine;
7+
import io.github.sridharbandi.modal.htmlcs.Issues;
78
import io.github.sridharbandi.modal.htmlcs.Params;
89
import org.apache.commons.io.FilenameUtils;
910
import org.apache.commons.io.IOUtils;
@@ -41,22 +42,20 @@ public A11y(WebDriver driver) {
4142
public A11y() {
4243
}
4344

44-
public void execute(Engine engine, Params params) throws URISyntaxException, IOException, TemplateException {
45+
public Object execute(Engine engine, Params params) throws IOException {
4546
waitForLoad();
4647
InputStream in = this.getClass().getClassLoader().getResourceAsStream("js/" + engine.toString().toLowerCase() + ".js");
4748
String js = IOUtils.toString(in, StandardCharsets.UTF_8);
48-
String strJson = "";
49-
if (engine.name().equals(Engine.HTMLCS.name())) {
50-
ObjectMapper mapper = new ObjectMapper();
51-
strJson = mapper.writeValueAsString(params);
52-
}
53-
String script = engine.name().equalsIgnoreCase("axe") ? "return axeData();" + js : "return getData('" + strJson + "');" + js;
49+
ObjectMapper mapper = new ObjectMapper();
50+
String strJson = mapper.writeValueAsString(params);
51+
String script = engine.name().equalsIgnoreCase("axe") ? "return axeData('" + strJson + "');" + js : "return getData('" + strJson + "');" + js;
5452
Object issues = javascriptExecutor.executeScript(script);
55-
ObjectMapper objectMapper = new ObjectMapper();
56-
String strResponse = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(issues);
53+
String strResponse = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(issues);
5754
Path path = get("./target/java-a11y/" + engine.toString().toLowerCase() + "/json/" + UUID.randomUUID() + ".json");
5855
createDirectories(path.getParent());
5956
write(path, strResponse.getBytes(StandardCharsets.UTF_8));
57+
Class<?> clazz = engine.name().equalsIgnoreCase("axe") ? io.github.sridharbandi.modal.axe.Issues.class : Issues.class;
58+
return mapper.readValue(strResponse, clazz);
6059
}
6160

6261
private void waitForLoad() {

src/main/resources/js/axe.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
async function axeData() {
1+
async function axeData(params) {
2+
const obj = JSON.parse(params);
23
await injectAxeScript();
34
var results = await runAxe()
45
results.id = 'id_' + (Date.now().toString(36) + Math.random().toString(36).substr(2, 5));
5-
results.title = document.title;
6+
results.title = obj.pageTitle == null ? document.title : obj.pageTitle;
67
results.dimension = window.innerWidth + ' X ' + window.innerHeight;
78
results.device = device();
89
results.browser = getBrowser();

src/main/resources/js/htmlcs.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ async function getData(params) {
44

55
await injectScript();
66
const results = await runHtmlCS(obj.standard, codes);
7+
const pageTitle = obj.pageTitle == null ? document.title : obj.pageTitle;
78
return {
89
errors: resultsCount(results, 1),
910
warnings: resultsCount(results, 2),
@@ -12,7 +13,7 @@ async function getData(params) {
1213
date: getFormattedDate(),
1314
dimension: window.innerWidth + ' X ' + window.innerHeight,
1415
url: window.location.href,
15-
title: document.title,
16+
title: pageTitle,
1617
device: device(),
1718
browser: getBrowser(),
1819
results: results,

src/test/java/io/github/sridharbandi/AxeRunnerTest.java

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

33
import io.github.sridharbandi.a11y.Engine;
4+
import io.github.sridharbandi.modal.htmlcs.Params;
45
import io.github.sridharbandi.util.A11y;
56
import org.junit.jupiter.api.BeforeEach;
67
import org.junit.jupiter.api.Test;
@@ -11,6 +12,7 @@
1112
import org.mockito.junit.jupiter.MockitoExtension;
1213
import org.openqa.selenium.WebDriver;
1314

15+
import static org.mockito.ArgumentMatchers.any;
1416
import static org.mockito.Mockito.verify;
1517

1618
@ExtendWith(MockitoExtension.class)
@@ -22,8 +24,6 @@ public class AxeRunnerTest {
2224
AxeRunner axeRunner = new AxeRunner(driver);
2325
@Mock
2426
A11y a11y;
25-
@Mock
26-
IRunner iRunner;
2727

2828
@BeforeEach
2929
public void setUp() {
@@ -32,7 +32,7 @@ public void setUp() {
3232

3333
@Test
3434
public void testExecute() throws Exception {
35-
axeRunner.execute();
36-
verify(a11y).execute(Engine.AXE, null);
35+
axeRunner.setPageTile("Page Title").execute();
36+
verify(a11y).execute(any(Engine.class), any(Params.class));
3737
}
3838
}

src/test/java/io/github/sridharbandi/HtmlCsRunnerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public void testExecute() throws Exception {
3636
htmlCsRunner.setStandard(HTMLCS.WCAG2AA);
3737
String codes[] = {"Code1", "Code2"};
3838
htmlCsRunner.setIgnoreCodes(codes);
39-
htmlCsRunner.execute();
39+
htmlCsRunner.setPageTile("Page Title").execute();
4040
verify(a11y).execute(any(Engine.class), any(Params.class));
4141
}
4242

0 commit comments

Comments
 (0)