Skip to content

Commit c8531cc

Browse files
committed
scope final
1 parent a19a686 commit c8531cc

19 files changed

+90
-46
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.udemy.spring.springselenium.kelvin.annotation;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.context.annotation.Lazy;
5+
6+
import java.lang.annotation.*;
7+
8+
@Lazy
9+
@Autowired
10+
@Documented
11+
@Target({ElementType.FIELD})
12+
@Retention(RetentionPolicy.RUNTIME)
13+
public @interface LazyAutowired {
14+
}

Diff for: src/main/java/com/udemy/spring/springselenium/annotation/LazyConfiguration.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/annotation/LazyConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.udemy.spring.springselenium.annotation;
1+
package com.udemy.spring.springselenium.kelvin.annotation;
22

33
import org.springframework.context.annotation.Configuration;
44
import org.springframework.context.annotation.Lazy;

Diff for: src/main/java/com/udemy/spring/springselenium/annotation/Page.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/annotation/Page.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
package com.udemy.spring.springselenium.annotation;
1+
package com.udemy.spring.springselenium.kelvin.annotation;
22

33

4+
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
45
import org.springframework.context.annotation.Lazy;
56
import org.springframework.context.annotation.Scope;
67
import org.springframework.stereotype.Component;
@@ -9,7 +10,7 @@
910

1011
@Lazy
1112
@Component
12-
@Scope("prototype")
13+
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
1314
@Documented
1415
@Target({ElementType.TYPE})
1516
@Retention(RetentionPolicy.RUNTIME)

Diff for: src/main/java/com/udemy/spring/springselenium/annotation/PageFragment.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/annotation/PageFragment.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.udemy.spring.springselenium.annotation;
1+
package com.udemy.spring.springselenium.kelvin.annotation;
22

33
import org.springframework.context.annotation.Lazy;
44
import org.springframework.context.annotation.Scope;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.udemy.spring.springselenium.kelvin.annotation;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Scope;
5+
6+
import java.lang.annotation.*;
7+
8+
@Bean
9+
@Scope("browserscope")
10+
@Documented
11+
@Target({ElementType.METHOD})
12+
@Retention(RetentionPolicy.RUNTIME)
13+
public @interface ThreadScopeBean {
14+
}

Diff for: src/main/java/com/udemy/spring/springselenium/config/FakerConfig.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/config/FakerConfig.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.udemy.spring.springselenium.config;
1+
package com.udemy.spring.springselenium.kelvin.config;
22

33
import com.github.javafaker.Faker;
4-
import com.udemy.spring.springselenium.annotation.LazyConfiguration;
4+
import com.udemy.spring.springselenium.kelvin.annotation.LazyConfiguration;
55
import org.springframework.context.annotation.Bean;
66

77
@LazyConfiguration

Diff for: src/main/java/com/udemy/spring/springselenium/config/RemoteWebDriverConfig.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/config/RemoteWebDriverConfig.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package com.udemy.spring.springselenium.config;
1+
package com.udemy.spring.springselenium.kelvin.config;
22

3-
import com.udemy.spring.springselenium.annotation.LazyConfiguration;
3+
import com.udemy.spring.springselenium.kelvin.annotation.LazyConfiguration;
4+
import com.udemy.spring.springselenium.kelvin.annotation.ThreadScopeBean;
45
import org.openqa.selenium.WebDriver;
56
import org.openqa.selenium.remote.DesiredCapabilities;
67
import org.openqa.selenium.remote.RemoteWebDriver;
78
import org.springframework.beans.factory.annotation.Value;
89
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
910
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
10-
import org.springframework.context.annotation.Bean;
1111
import org.springframework.context.annotation.Profile;
1212

1313
import java.net.URL;
@@ -19,13 +19,13 @@ public class RemoteWebDriverConfig {
1919
@Value("${selenium.grid.url}")
2020
private URL url;
2121

22-
@Bean
22+
@ThreadScopeBean
2323
@ConditionalOnProperty(name = "browser", havingValue = "firefox")
2424
public WebDriver remoteFirefoxDriver(){
2525
return new RemoteWebDriver(this.url, DesiredCapabilities.firefox());
2626
}
2727

28-
@Bean
28+
@ThreadScopeBean
2929
@ConditionalOnMissingBean
3030
public WebDriver remoteChromeDriver(){
3131
return new RemoteWebDriver(this.url, DesiredCapabilities.chrome());

Diff for: src/main/java/com/udemy/spring/springselenium/config/WebDriverConfig.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/config/WebDriverConfig.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
1-
package com.udemy.spring.springselenium.config;
1+
package com.udemy.spring.springselenium.kelvin.config;
22

3-
import com.udemy.spring.springselenium.annotation.LazyConfiguration;
3+
import com.udemy.spring.springselenium.kelvin.annotation.LazyConfiguration;
4+
import com.udemy.spring.springselenium.kelvin.annotation.ThreadScopeBean;
45
import io.github.bonigarcia.wdm.WebDriverManager;
56
import org.openqa.selenium.WebDriver;
67
import org.openqa.selenium.chrome.ChromeDriver;
78
import org.openqa.selenium.firefox.FirefoxDriver;
89
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
910
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
10-
import org.springframework.context.annotation.Bean;
1111
import org.springframework.context.annotation.Profile;
12-
import org.springframework.context.annotation.Scope;
1312

1413
@Profile("!remote")
1514
@LazyConfiguration
1615
public class WebDriverConfig {
1716

18-
@Bean
17+
@ThreadScopeBean
1918
@ConditionalOnProperty(name = "browser", havingValue = "firefox")
2019
public WebDriver firefoxDriver(){
2120
WebDriverManager.firefoxdriver().setup();
2221
return new FirefoxDriver();
2322
}
2423

25-
@Bean
26-
@Scope("browserscope")
24+
@ThreadScopeBean
2725
@ConditionalOnMissingBean
2826
public WebDriver chromeDriver(){
2927
WebDriverManager.chromedriver().version("77.0.3865.40").setup();

Diff for: src/main/java/com/udemy/spring/springselenium/config/WebDriverWaitConfig.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/config/WebDriverWaitConfig.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.udemy.spring.springselenium.config;
1+
package com.udemy.spring.springselenium.kelvin.config;
22

33

4-
import com.udemy.spring.springselenium.annotation.LazyConfiguration;
4+
import com.udemy.spring.springselenium.kelvin.annotation.LazyConfiguration;
55
import org.openqa.selenium.WebDriver;
66
import org.openqa.selenium.support.ui.WebDriverWait;
77
import org.springframework.beans.factory.annotation.Value;

Diff for: src/main/java/com/udemy/spring/springselenium/config/BrowserScope.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/scope/BrowserScope.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.udemy.spring.springselenium.config;
1+
package com.udemy.spring.springselenium.kelvin.scope;
22

33
import org.openqa.selenium.remote.RemoteWebDriver;
44
import org.openqa.selenium.remote.SessionId;

Diff for: src/main/java/com/udemy/spring/springselenium/config/BrowserScopeConfig.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/scope/BrowserScopeConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.udemy.spring.springselenium.config;
1+
package com.udemy.spring.springselenium.kelvin.scope;
22

33
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
44
import org.springframework.context.annotation.Bean;

Diff for: src/main/java/com/udemy/spring/springselenium/config/BrowserScopePostProcessor.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/scope/BrowserScopePostProcessor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.udemy.spring.springselenium.config;
1+
package com.udemy.spring.springselenium.kelvin.scope;
22

33
import org.springframework.beans.BeansException;
44
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;

Diff for: src/main/java/com/udemy/spring/springselenium/util/ScreenShotUtil.java renamed to src/main/java/com/udemy/spring/springselenium/kelvin/service/ScreenshotService.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.udemy.spring.springselenium.util;
1+
package com.udemy.spring.springselenium.kelvin.service;
22

33
import com.github.javafaker.Faker;
44
import org.openqa.selenium.OutputType;
@@ -7,16 +7,16 @@
77
import org.springframework.beans.factory.annotation.Value;
88
import org.springframework.context.ApplicationContext;
99
import org.springframework.context.annotation.Lazy;
10-
import org.springframework.stereotype.Component;
10+
import org.springframework.stereotype.Service;
1111
import org.springframework.util.FileCopyUtils;
1212

1313
import java.io.File;
1414
import java.io.IOException;
1515
import java.nio.file.Path;
1616

1717
@Lazy
18-
@Component
19-
public class ScreenShotUtil {
18+
@Service
19+
public class ScreenshotService {
2020

2121
@Autowired
2222
private ApplicationContext ctx;

Diff for: src/main/java/com/udemy/spring/springselenium/page/google/GooglePage.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.udemy.spring.springselenium.page.google;
22

3-
import com.udemy.spring.springselenium.annotation.Page;
3+
import com.udemy.spring.springselenium.kelvin.annotation.Page;
44
import com.udemy.spring.springselenium.page.Base;
55
import org.springframework.beans.factory.annotation.Autowired;
66
import org.springframework.beans.factory.annotation.Value;

Diff for: src/main/java/com/udemy/spring/springselenium/page/google/SearchComponent.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.udemy.spring.springselenium.page.google;
22

3-
import com.udemy.spring.springselenium.annotation.PageFragment;
3+
import com.udemy.spring.springselenium.kelvin.annotation.PageFragment;
44
import com.udemy.spring.springselenium.page.Base;
55
import org.openqa.selenium.WebElement;
66
import org.openqa.selenium.support.FindBy;

Diff for: src/main/java/com/udemy/spring/springselenium/page/google/SearchResult.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.udemy.spring.springselenium.page.google;
22

3-
import com.udemy.spring.springselenium.annotation.PageFragment;
3+
import com.udemy.spring.springselenium.kelvin.annotation.PageFragment;
44
import com.udemy.spring.springselenium.page.Base;
55
import org.openqa.selenium.WebElement;
66
import org.openqa.selenium.support.FindBy;

Diff for: src/test/java/com/udemy/spring/springselenium/googletest/Google1Test.java

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
package com.udemy.spring.springselenium.googletest;
22

33
import com.udemy.spring.springselenium.SpringBaseTestNGTest;
4+
import com.udemy.spring.springselenium.kelvin.annotation.LazyAutowired;
5+
import com.udemy.spring.springselenium.kelvin.service.ScreenshotService;
46
import com.udemy.spring.springselenium.page.google.GooglePage;
5-
import com.udemy.spring.springselenium.util.ScreenShotUtil;
6-
import org.springframework.beans.factory.annotation.Autowired;
7-
import org.springframework.context.annotation.Lazy;
87
import org.testng.Assert;
98
import org.testng.annotations.Test;
109

1110
import java.io.IOException;
1211

1312
public class Google1Test extends SpringBaseTestNGTest {
1413

15-
@Autowired
14+
@LazyAutowired
1615
private GooglePage googlePage;
1716

18-
@Lazy
19-
@Autowired
20-
private ScreenShotUtil screenShotUtil;
17+
@LazyAutowired
18+
private ScreenshotService screenshotService;
2119

2220
@Test
2321
public void googleTest() throws IOException {
@@ -26,7 +24,7 @@ public void googleTest() throws IOException {
2624
this.googlePage.getSearchComponent().search("spring boot");
2725
Assert.assertTrue(this.googlePage.getSearchResult().isAt());
2826
Assert.assertTrue(this.googlePage.getSearchResult().getCount() > 2);
29-
this.screenShotUtil.takeScreenShot();
27+
this.screenshotService.takeScreenShot();
3028
this.googlePage.close();
3129
}
3230

Diff for: src/test/java/com/udemy/spring/springselenium/googletest/Google2Test.java

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
package com.udemy.spring.springselenium.googletest;
22

33
import com.udemy.spring.springselenium.SpringBaseTestNGTest;
4+
import com.udemy.spring.springselenium.kelvin.annotation.LazyAutowired;
5+
import com.udemy.spring.springselenium.kelvin.service.ScreenshotService;
46
import com.udemy.spring.springselenium.page.google.GooglePage;
5-
import com.udemy.spring.springselenium.util.ScreenShotUtil;
6-
import org.springframework.beans.factory.annotation.Autowired;
7-
import org.springframework.context.annotation.Lazy;
87
import org.testng.Assert;
98
import org.testng.annotations.Test;
109

1110
import java.io.IOException;
1211

1312
public class Google2Test extends SpringBaseTestNGTest {
1413

15-
@Autowired
14+
@LazyAutowired
1615
private GooglePage googlePage;
1716

18-
@Lazy
19-
@Autowired
20-
private ScreenShotUtil screenShotUtil;
17+
@LazyAutowired
18+
private ScreenshotService screenshotService;
2119

2220
@Test
2321
public void googleTest() throws IOException {
@@ -26,7 +24,7 @@ public void googleTest() throws IOException {
2624
this.googlePage.getSearchComponent().search("selenium");
2725
Assert.assertTrue(this.googlePage.getSearchResult().isAt());
2826
Assert.assertTrue(this.googlePage.getSearchResult().getCount() > 2);
29-
this.screenShotUtil.takeScreenShot();
27+
this.screenshotService.takeScreenShot();
3028
this.googlePage.close();
3129
}
3230

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.udemy.spring.springselenium.googletest;
2+
3+
import com.udemy.spring.springselenium.SpringBaseTestNGTest;
4+
import org.openqa.selenium.WebDriver;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.context.ApplicationContext;
7+
import org.testng.annotations.Test;
8+
9+
public class MultiBrowserTest extends SpringBaseTestNGTest {
10+
11+
@Autowired
12+
private ApplicationContext ctx;
13+
14+
@Test
15+
public void browserTest(){
16+
this.ctx.getBean("chromeDriver", WebDriver.class).get("https://www.google.com");
17+
this.ctx.getBean("firefoxDriver", WebDriver.class).get("https://www.yahoo.com");
18+
}
19+
20+
21+
}

0 commit comments

Comments
 (0)