Skip to content

Commit 937c767

Browse files
demonstrate file download feature and accessibility testing (#14)
* demonstrate file download feature and accessibility testing * Use TestNG SoftAssert Co-authored-by: roy-de-kleijn <roy.k@browserstack.com>
1 parent 219826b commit 937c767

6 files changed

Lines changed: 67 additions & 4 deletions

File tree

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@
7878
<artifactId>browserstack-local-java</artifactId>
7979
<version>1.0.6</version>
8080
</dependency>
81+
<dependency>
82+
<groupId>com.deque.html.axe-core</groupId>
83+
<artifactId>selenium</artifactId>
84+
<version>4.3.1</version>
85+
</dependency>
8186
<dependency>
8287
<groupId>org.testng</groupId>
8388
<artifactId>testng</artifactId>

src/test/java/com/browserstack/app/pages/ConfirmationPage.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ public class ConfirmationPage extends BasePage {
1111
@FindBy(css = ".continueButtonContainer button")
1212
private WebElement continueShoppingButton;
1313

14+
@FindBy(id = "downloadpdf")
15+
private WebElement downloadpdf;
16+
1417
private By confirmationMessage = By.id("confirmation-message");
1518

1619
public ConfirmationPage(WebDriver driver) {
@@ -25,4 +28,8 @@ public HomePage continueShopping() {
2528
continueShoppingButton.click();
2629
return new HomePage(driver);
2730
}
31+
32+
public void downloadPDF() {
33+
downloadpdf.click();
34+
}
2835
}

src/test/java/com/browserstack/test/suites/TestBase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,20 @@ public class TestBase {
3333
private static final long TIMESTAMP = new Date().getTime();
3434
private Local local;
3535
protected WebDriverWait wait;
36+
private String environment;
3637

3738
public WebDriver getDriver() {
3839
return driver.get();
3940
}
4041

42+
public boolean isRemoteExecution() {
43+
return environment.equalsIgnoreCase("remote");
44+
}
45+
4146
@BeforeMethod
4247
@Parameters(value = {"environment", "testType", "env_cap_id"})
4348
public void setUp(@Optional("on-prem") String environment, @Optional("single") String testType, @Optional("0") int env_cap_id, Method m) throws Exception {
49+
this.environment = environment;
4450
JSONParser parser = new JSONParser();
4551
JSONObject testCapsConfig = (JSONObject) parser.parse(new FileReader(PATH_TO_TEST_CAPS_JSON));
4652
String url = (String) testCapsConfig.get("application_endpoint");

src/test/java/com/browserstack/test/suites/e2e/OrderTest.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@
44
import com.browserstack.app.pages.HomePage;
55
import com.browserstack.app.pages.OrdersPage;
66
import com.browserstack.test.suites.TestBase;
7-
import org.openqa.selenium.By;
8-
import org.openqa.selenium.support.ui.ExpectedConditions;
7+
import org.openqa.selenium.JavascriptExecutor;
98
import org.testng.Assert;
109
import org.testng.annotations.Test;
10+
import org.testng.asserts.SoftAssert;
1111

1212
public class OrderTest extends TestBase {
1313

1414
@Test
1515
public void placeOrder() {
16+
SoftAssert softly = new SoftAssert();
1617
ConfirmationPage page = new HomePage(getDriver())
1718
.navigateToSignIn()
1819
.loginWith("fav_user", "testingisfun99")
@@ -24,9 +25,19 @@ public void placeOrder() {
2425
.enterShippingDetails("firstname", "lastname", "address", "state", "12345");
2526
Assert.assertTrue(page.isConfirmationDisplayed());
2627

28+
if (isRemoteExecution()) {
29+
page.downloadPDF();
30+
softly.assertTrue(downloadedFileExists("confirmation.pdf"));
31+
}
32+
2733
OrdersPage ordersPage = page.continueShopping().navigateToOrders();
28-
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(".spinner")));
2934

30-
Assert.assertEquals(ordersPage.getItemsFromOrder(), 3);
35+
softly.assertEquals(ordersPage.getItemsFromOrder(), 3);
36+
softly.assertAll();
37+
}
38+
39+
private boolean downloadedFileExists(String fileName) {
40+
JavascriptExecutor jse = (JavascriptExecutor) getDriver();
41+
return Boolean.parseBoolean(jse.executeScript("browserstack_executor: {\"action\": \"fileExists\", \"arguments\": {\"fileName\": \"" + fileName + "\"}}").toString());
3142
}
3243
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.browserstack.test.suites.login;
2+
3+
import com.browserstack.test.suites.TestBase;
4+
import com.deque.html.axecore.results.Results;
5+
import com.deque.html.axecore.results.Rule;
6+
import com.deque.html.axecore.selenium.AxeBuilder;
7+
import org.assertj.core.api.Assertions;
8+
import org.testng.annotations.Test;
9+
10+
import java.util.List;
11+
12+
public class AccessibilityTest extends TestBase {
13+
14+
@Test
15+
public void testForAccessibility() {
16+
AxeBuilder builder = new AxeBuilder();
17+
Results results = builder.analyze(getDriver());
18+
List<Rule> violations = results.getViolations();
19+
20+
Assertions.assertThat(violations).isEmpty();
21+
}
22+
}

src/test/resources/axe/axe.min.js

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)