-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
+ MVE reproducing serenity-bdd/serenity-core#2470 and allowing to tes…
…t fixes
- Loading branch information
Simon Beyer
authored and
Simon Beyer
committed
Aug 22, 2022
1 parent
0ba0204
commit 4ac4989
Showing
10 changed files
with
289 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
end_of_line = unset | ||
indent_size = unset | ||
indent_style = tab | ||
insert_final_newline = true | ||
max_line_length = off | ||
tab_width = unset | ||
trim_trailing_whitespace = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
.idea | ||
target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,27 @@ | ||
# MVE_SerenityBDD_cannotCauseAlertWithoutDestroyingIt | ||
Reproduces https://github.com/serenity-bdd/serenity-core/issues/2470 | ||
|
||
# Usage | ||
|
||
- adjust if necessary: only configured to use | ||
- Chrome | ||
- Maven | ||
- Java 18 | ||
|
||
1. mvn verify | ||
- should wait for you to attach a debugger | ||
- should download chromedriver into target folder, if none found (but it seems to find one from idk where on my machine, so it never downloads... - sorry if it does not work) | ||
2. prepare breakpoints | ||
1. enabled in `StepInterceptor.executeTestStepMethod` after `invokeMethod` | ||
2. disabled in `WebDriverFacade.getScreenshotAs` at `getScreenshotAs` | ||
3. attach debugger to maven process offered in StdOut | ||
4. when reaching 2.1 and the alert is visible in the Browser, enable 2.2 | ||
5. when reaching 2.2 the alert is gone | ||
6. locally build a snapshot of [this fork](https://github.com/Zsar/serenity-core/tree/fix/2470-cannotCauseAlertWithoutDestroyingIt) | ||
- mvn install -T1C -q -DskipTests | ||
- note project.version in pom.xml | ||
7. use locally built snapshop here | ||
- update version of serenity-core in pom.xml with value from 6 | ||
- mvn clean compile -U | ||
8. repeat steps 1 - 5 => now works as expected | ||
|
||
Refer to [discussion starting here](https://github.com/serenity-bdd/serenity-core/issues/2470#issuecomment-1221334308) for more in-depth analysis. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<groupId>net.zsar.serenity-bdd.mve</groupId> | ||
<artifactId>mve-cannot-cause-alert-without-destroying-it</artifactId> | ||
<version>1.0.0-SNAPSHOT</version> | ||
<packaging>jar</packaging> | ||
<name>MVE_SerenityBDD_cannotCauseAlertWithoutDestroyingIt</name> | ||
|
||
<properties> | ||
<encoding>UTF-8</encoding> | ||
<maven.compiler.source>18</maven.compiler.source> | ||
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target> | ||
<maven.failsafe.debug>true</maven.failsafe.debug> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<serenity.version>3.3.2</serenity.version> | ||
<serenity.maven.version>${serenity.version}</serenity.maven.version> | ||
<webdriver.base.url>file://${project.build.testSourceDirectory}/../resources/Test.html</webdriver.base.url> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>net.serenity-bdd</groupId> | ||
<artifactId>serenity-core</artifactId> | ||
<version>${serenity.version}</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>net.serenity-bdd</groupId> | ||
<artifactId>serenity-screenplay</artifactId> | ||
<version>${serenity.version}</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>net.serenity-bdd</groupId> | ||
<artifactId>serenity-screenplay-rest</artifactId> | ||
<version>${serenity.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>net.serenity-bdd</groupId> | ||
<artifactId>serenity-screenplay-webdriver</artifactId> | ||
<version>${serenity.version}</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>net.serenity-bdd</groupId> | ||
<artifactId>serenity-rest-assured</artifactId> | ||
<version>${serenity.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>net.serenity-bdd</groupId> | ||
<artifactId>serenity-ensure</artifactId> | ||
<version>${serenity.version}</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>ch.qos.logback</groupId> | ||
<artifactId>logback-classic</artifactId> | ||
<version>1.0.13</version> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-surefire-plugin</artifactId> | ||
<version>3.0.0-M5</version> | ||
<configuration> | ||
<skip>true</skip> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<artifactId>maven-failsafe-plugin</artifactId> | ||
<version>3.0.0-M5</version> | ||
<configuration> | ||
<includes> | ||
<include>**/*Test.java</include> | ||
<include>**/Test*.java</include> | ||
<include>**/*TestSuite.java</include> | ||
<include>**/When*.java</include> | ||
</includes> | ||
<systemPropertyVariables> | ||
<webdriver.base.url>${webdriver.base.url}</webdriver.base.url> | ||
</systemPropertyVariables> | ||
<parallel>classes</parallel> | ||
<!-- <parallel>methods</parallel> --> | ||
<!-- <useUnlimitedThreads>true</useUnlimitedThreads> --> | ||
<threadCount>2</threadCount> | ||
</configuration> | ||
<executions> | ||
<execution> | ||
<goals> | ||
<goal>integration-test</goal> | ||
<goal>verify</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>3.6.2</version> | ||
<configuration> | ||
<source>11</source> | ||
<target>11</target> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>net.serenity-bdd.maven.plugins</groupId> | ||
<artifactId>serenity-maven-plugin</artifactId> | ||
<version>${serenity.maven.version}</version> | ||
<configuration> | ||
</configuration> | ||
<dependencies> | ||
<dependency> | ||
<groupId>net.serenity-bdd</groupId> | ||
<artifactId>serenity-core</artifactId> | ||
<version>${serenity.version}</version> | ||
</dependency> | ||
</dependencies> | ||
<executions> | ||
<execution> | ||
<id>serenity-reports</id> | ||
<phase>post-integration-test</phase> | ||
<goals> | ||
<goal>aggregate</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package net.zsar.serenitybdd.mve; | ||
|
||
import net.serenitybdd.core.pages.PageObject; | ||
import net.serenitybdd.screenplay.Actor; | ||
import net.serenitybdd.screenplay.Performable; | ||
import net.serenitybdd.screenplay.Task; | ||
import net.serenitybdd.screenplay.actions.Click; | ||
import net.serenitybdd.screenplay.actions.Switch; | ||
import net.serenitybdd.screenplay.ensure.Ensure; | ||
import net.serenitybdd.screenplay.targets.Target; | ||
import org.openqa.selenium.By; | ||
import org.openqa.selenium.support.ui.ExpectedConditions; | ||
import org.openqa.selenium.support.ui.WebDriverWait; | ||
|
||
import java.time.Duration; | ||
|
||
public class TestPage extends PageObject { | ||
static final Target BUTTON = Target.the("alert button").located(By.xpath("//button")); | ||
|
||
public Performable pushTheButton() { | ||
return Task.where("{0} pushed the button and confirmed the alert" | ||
, Ensure.that(BUTTON).isDisplayed() | ||
, Click.on(BUTTON) | ||
, new ClickOnAlert() | ||
); | ||
} | ||
|
||
class ClickOnAlert implements Task { | ||
@Override | ||
public void performAs(final Actor actor) { | ||
final var alert = new WebDriverWait(getDriver(), Duration.ZERO).until(ExpectedConditions.alertIsPresent()); | ||
alert.accept(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package net.zsar.serenitybdd.mve; | ||
|
||
import net.serenitybdd.junit.runners.SerenityRunner; | ||
import net.serenitybdd.screenplay.Actor; | ||
import net.serenitybdd.screenplay.abilities.BrowseTheWeb; | ||
import net.serenitybdd.screenplay.actions.Open; | ||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
import org.openqa.selenium.WebDriver; | ||
|
||
@RunWith(SerenityRunner.class) | ||
public class TestTest { | ||
TestPage testPage; | ||
WebDriver webDriver; | ||
|
||
/** reproduces <a href="https://github.com/serenity-bdd/serenity-core/issues/2470">2470</a> */ | ||
@Test | ||
public void pushTheButton() { | ||
final var actor = Actor.named("Hobbyist").whoCan(BrowseTheWeb.with(this.webDriver)); | ||
actor.attemptsTo( | ||
Open.browserOn(this.testPage) | ||
, this.testPage.pushTheButton() | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<title>MVE_SerenityBDD_cannotCauseAlertWithoutDestroyingIt</title> | ||
</head> | ||
<body> | ||
<button name="alert" onclick="window.alert('The test must confirm this alert to succeed!')">trigger alert</button> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Root logger option | ||
log4j.rootLogger=DEBUG, stdout | ||
|
||
# Direct log messages to stdout | ||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender | ||
log4j.appender.stdout.Target=System.out | ||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout | ||
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss.SSS} [%t] %-5p %c{1} - %m%n |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<Configuration status="INFO"> | ||
<Appenders> | ||
<Console name="Console" target="SYSTEM_OUT"> | ||
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> | ||
</Console> | ||
</Appenders> | ||
<Loggers> | ||
<Root level="debug"> | ||
<AppenderRef ref="Console" /> | ||
</Root> | ||
</Loggers> | ||
</Configuration> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# define variables | ||
# https://github.com/serenity-bdd/serenity-core/issues/2470 | ||
# https://github.com/serenity-bdd/serenity-core/issues/2470#issuecomment-858463545 | ||
driver_capabilities.common.unexpectedAlertBehaviour=ignore | ||
headless.mode = false | ||
chrome { | ||
preferences.download.default_directory="${user.dir}\\target" | ||
preferences.profile.default_content_settings.popupsy=0 | ||
switches = """--window-size=1920,1200; --test-type; --no-sandbox; --ignore-certificate-errors; --disable-dev-shm-usage; --disable-popup-blocking; --disable-default-apps; --disable-extensions-file-access-check; --incognito; --disable-infobars; --disable-gpu; --acceptInsecureCerts; --lang=en""" | ||
} | ||
serenity { | ||
restart.browser.for.each = never | ||
take.screenshots.for{ | ||
tasks=after_each_step | ||
interactions=for_failures | ||
questions=after_each_step | ||
} | ||
} | ||
webdriver { | ||
driver=chrome | ||
autodownload = true | ||
} |