Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5270687

Browse files
committed
Update TestNG Listener
1 parent 34bbf54 commit 5270687

File tree

12 files changed

+193
-38
lines changed

12 files changed

+193
-38
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.sayem.webdriver;
2+
3+
/**
4+
* Created by sayem on 12/28/15.
5+
*/
6+
public enum Repository {
7+
8+
/**
9+
* Browser settings
10+
*/
11+
12+
CHROME("chrome"),
13+
FIREFOX("firefox"),
14+
SAFARI("safari"),
15+
IE("ie"),
16+
EDGE("edge"),
17+
OPERA("opera"),
18+
PHANTOMJS("phantomjs"),
19+
HTML_UNIT("htmlunit"),
20+
21+
/**
22+
* Environment settings
23+
*/
24+
MADISON_ISLAND(""),
25+
THE_INTERNET("http://the-internet.herokuapp.com/"),
26+
JQUERY_DEMO("http://jqueryui.com/demos/"),
27+
PHP_TRAVELS("http://phptravels.com/demo/"),
28+
MERCURY_TOUR("http://newtours.demoaut.com/"),
29+
WAY2AUTOMATION("http://www.way2automation.com/demo.html"),
30+
AUTOMATION_PRACTICE("http://automationpractice.com/index.php"),
31+
DEMO_QA("http://demoqa.com/"),
32+
ORANGE_HRM("http://enterprise.demo.orangehrmlive.com/symfony/web/index.php/auth/login"),
33+
34+
35+
/**
36+
* Properties file settings
37+
*/
38+
LOCATION("src/test/resources/org.sayem.webdriver/selenium.properties"),
39+
BROWSER("browser"),
40+
URL("url");
41+
42+
private String value;
43+
44+
Repository(String value) {
45+
this.value = value;
46+
}
47+
48+
public String getValue() {
49+
return value;
50+
}
51+
52+
@Override
53+
public String toString() {
54+
return this.getValue();
55+
}
56+
}

‎src/main/java/org/sayem/webdriver/TestBase.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import org.sayem.webdriver.browsers.config.BrowserThreads;
77
import org.sayem.webdriver.listeners.RetryListener;
88
import org.sayem.webdriver.listeners.ScreenshotListener;
9+
import org.sayem.webdriver.listeners.TestNGListener;
910
import org.sayem.webdriver.properties.PropertiesUtil;
10-
import org.sayem.webdriver.properties.Repository;
1111
import org.testng.annotations.AfterMethod;
1212
import org.testng.annotations.AfterSuite;
1313
import org.testng.annotations.BeforeSuite;
@@ -20,7 +20,9 @@
2020
/**
2121
* Created by sayem on 10/05/15.
2222
*/
23-
@Listeners({ScreenshotListener.class, RetryListener.class})
23+
@Listeners({TestNGListener.class,
24+
ScreenshotListener.class,
25+
RetryListener.class})
2426
public abstract class TestBase {
2527

2628
private static List<BrowserThreads> webDriverThreadPool = Collections.synchronizedList(new ArrayList<>());
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.sayem.webdriver.annotations;
2+
3+
import org.sayem.webdriver.Repository;
4+
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.Target;
7+
8+
import static java.lang.annotation.ElementType.METHOD;
9+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
10+
import static org.sayem.webdriver.Repository.CHROME;
11+
12+
/**
13+
* Created by sayem on 2/24/16.
14+
*/
15+
@Retention(RUNTIME)
16+
@Target({METHOD})
17+
public @interface Browser {
18+
Repository browser() default CHROME;
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.sayem.webdriver.annotations;
2+
3+
import org.sayem.webdriver.Repository;
4+
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.Target;
7+
8+
import static java.lang.annotation.ElementType.METHOD;
9+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
10+
import static org.sayem.webdriver.Repository.*;
11+
12+
/**
13+
* Created by sayem on 2/24/16.
14+
*/
15+
@Retention(RUNTIME)
16+
@Target({METHOD})
17+
public @interface WebSite {
18+
Repository value() default MADISON_ISLAND;
19+
}

‎src/main/java/org/sayem/webdriver/browsers/config/BrowserThreads.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.openqa.selenium.remote.DesiredCapabilities;
1111
import org.openqa.selenium.remote.RemoteWebDriver;
1212
import org.sayem.webdriver.TestBase;
13-
import org.sayem.webdriver.properties.Repository;
13+
import org.sayem.webdriver.Repository;
1414
import org.slf4j.Logger;
1515

1616
import java.net.InetSocketAddress;
@@ -141,10 +141,11 @@ private void instantiateWebDriver(DesiredCapabilities desiredCapabilities) {
141141
}
142142

143143
private void setup() {
144-
if (defaultUrl.isEmpty()) {
145-
log.error("No URL specified, defaulting to: " + defaultUrl + "'...");
146-
webdriver.navigate().to(TestBase.getProperties(Repository.URL));
147-
}else {
144+
String url = TestBase.getProperties(Repository.URL);
145+
if (defaultUrl == null) {
146+
System.out.println("No URL specified, defaulting to properties file url: " + url + "'...");
147+
webdriver.navigate().to(url);
148+
} else {
148149
webdriver.navigate().to(defaultUrl);
149150
}
150151
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package org.sayem.webdriver.listeners;
2+
3+
import org.sayem.webdriver.annotations.Browser;
4+
import org.sayem.webdriver.annotations.WebSite;
5+
import org.testng.*;
6+
7+
import java.lang.annotation.Annotation;
8+
9+
/**
10+
* Created by sayem on 2/24/16.
11+
*/
12+
public class TestNGListener implements IInvokedMethodListener2 {
13+
14+
private String environment;
15+
private String browser;
16+
17+
18+
@Override
19+
public void beforeInvocation(IInvokedMethod method, ITestResult testResult, ITestContext context) {
20+
21+
for (ITestNGMethod m : context.getAllTestMethods()) {
22+
if (m.getConstructorOrMethod().getMethod().isAnnotationPresent(WebSite.class) &&
23+
m.getConstructorOrMethod().getMethod().isAnnotationPresent(Browser.class)) {
24+
environment = m.getConstructorOrMethod().getMethod().getAnnotation(WebSite.class).value().getValue();
25+
browser = m.getConstructorOrMethod().getMethod().getAnnotation(Browser.class).browser().getValue();
26+
} else if (m.getConstructorOrMethod().getMethod().isAnnotationPresent(WebSite.class)) {
27+
environment = m.getConstructorOrMethod().getMethod().getAnnotation(WebSite.class).value().getValue();
28+
} else if (m.getConstructorOrMethod().getMethod().isAnnotationPresent(Browser.class)) {
29+
browser = m.getConstructorOrMethod().getMethod().getAnnotation(Browser.class).browser().getValue();
30+
}
31+
}
32+
33+
if (method.isTestMethod() && annotationPresent(method, WebSite.class) &&
34+
method.isTestMethod() && annotationPresent(method, Browser.class)) {
35+
System.setProperty("seleniumUrl", environment);
36+
System.setProperty("browser", browser);
37+
} else if (method.isTestMethod() && annotationPresent(method, WebSite.class)) {
38+
System.setProperty("seleniumUrl", environment);
39+
} else if (method.isTestMethod() && annotationPresent(method, Browser.class)) {
40+
System.setProperty("browser", browser);
41+
}
42+
}
43+
44+
@Override
45+
public void afterInvocation(IInvokedMethod method, ITestResult testResult, ITestContext context) {
46+
// TODO Auto-generated method stub
47+
}
48+
49+
@Override
50+
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
51+
// TODO Auto-generated method stub
52+
}
53+
54+
@Override
55+
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
56+
// TODO Auto-generated method stub
57+
}
58+
59+
private boolean annotationPresent(IInvokedMethod method, Class<? extends Annotation> clazz) {
60+
return method.getTestMethod().getConstructorOrMethod().getMethod().isAnnotationPresent(clazz);
61+
}
62+
}
63+

‎src/main/java/org/sayem/webdriver/properties/PropertiesUtil.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.lang.reflect.InvocationTargetException;
88
import java.util.Properties;
99

10+
import org.sayem.webdriver.Repository;
1011
import org.slf4j.Logger;
1112

1213
/**

‎src/main/java/org/sayem/webdriver/properties/Repository.java

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

‎src/test/java/org/sayem/webdriver/testcases/internet/BrokenImageTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
package org.sayem.webdriver.testcases.internet;
22

33
import org.sayem.webdriver.TestBase;
4+
import org.sayem.webdriver.annotations.Browser;
5+
import org.sayem.webdriver.annotations.WebSite;
46
import org.sayem.webdriver.pages.internet.HomePage;
57
import org.testng.annotations.Test;
68

9+
import static org.sayem.webdriver.Repository.*;
10+
711
/**
812
* Created by sayem on 1/31/16.
913
*/
1014
public class BrokenImageTest extends TestBase{
1115

16+
@Browser(browser = FIREFOX)
17+
@WebSite(value = THE_INTERNET)
1218
@Test
1319
public void brokenImageTest(){
14-
System.setProperty("seleniumUrl", "http://the-internet.herokuapp.com/");
1520
HomePage page = pageFactory(HomePage.class);
1621
page.brokenImage()
1722
.brokenImage();

‎src/test/java/org/sayem/webdriver/testcases/internet/CheckboxTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package org.sayem.webdriver.testcases.internet;
22

33
import org.sayem.webdriver.TestBase;
4+
import org.sayem.webdriver.annotations.Browser;
5+
import org.sayem.webdriver.annotations.WebSite;
46
import org.sayem.webdriver.pages.internet.HomePage;
57
import org.testng.annotations.Test;
68

9+
import static org.sayem.webdriver.Repository.*;
10+
711
public class CheckboxTest extends TestBase{
812

913
/***
@@ -17,9 +21,10 @@ public class CheckboxTest extends TestBase{
1721
* mvn clean install -Dbrowser=phantomjs
1822
*/
1923

24+
@Browser(browser = CHROME)
25+
@WebSite(value = THE_INTERNET)
2026
@Test
2127
public void checkboxTest(){
22-
System.setProperty("seleniumUrl", "http://the-internet.herokuapp.com/");
2328
HomePage page = pageFactory(HomePage.class);
2429
page.checkboxes()
2530
.selectCheckbox();

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /