1818package org .openqa .selenium .grid .router ;
1919
2020import static org .assertj .core .api .AssertionsForClassTypes .assertThat ;
21+ import static org .openqa .selenium .testing .drivers .Browser .*;
2122
2223import java .io .StringReader ;
2324import java .util .Collections ;
25+ import java .util .Objects ;
2426import java .util .concurrent .CompletableFuture ;
2527import java .util .concurrent .ExecutionException ;
2628import java .util .concurrent .TimeUnit ;
2729import java .util .concurrent .TimeoutException ;
30+ import org .junit .jupiter .api .AfterEach ;
31+ import org .junit .jupiter .api .BeforeEach ;
2832import org .junit .jupiter .api .Test ;
2933import org .openqa .selenium .By ;
3034import org .openqa .selenium .WebDriver ;
4044import org .openqa .selenium .bidi .module .LogInspector ;
4145import org .openqa .selenium .environment .webserver .AppServer ;
4246import org .openqa .selenium .environment .webserver .NettyAppServer ;
43- import org .openqa .selenium .firefox .FirefoxOptions ;
4447import org .openqa .selenium .grid .config .TomlConfig ;
4548import org .openqa .selenium .grid .router .DeploymentTypes .Deployment ;
4649import org .openqa .selenium .remote .Augmenter ;
4750import org .openqa .selenium .remote .RemoteWebDriver ;
51+ import org .openqa .selenium .testing .Ignore ;
52+ import org .openqa .selenium .testing .NotYetImplemented ;
4853import org .openqa .selenium .testing .drivers .Browser ;
4954
5055class RemoteWebDriverBiDiTest {
56+ private WebDriver driver ;
57+ private AppServer server ;
5158
52- @ Test
53- void ensureBiDiSessionCreation () {
54- Browser browser = Browser .FIREFOX ;
59+ @ BeforeEach
60+ void setup () {
61+ Browser browser = Objects . requireNonNull ( Browser .detect ()) ;
5562
5663 Deployment deployment =
5764 DeploymentTypes .STANDALONE .start (
@@ -63,47 +70,34 @@ void ensureBiDiSessionCreation() {
6370 + "driver-implementation = "
6471 + browser .displayName ())));
6572
66- FirefoxOptions options = createFirefoxOptions ();
67- // Enable BiDi
68- options .setCapability ("webSocketUrl" , true );
69- options .merge (Browser .FIREFOX .getCapabilities ());
70-
71- WebDriver driver = new RemoteWebDriver (deployment .getServer ().getUrl (), options );
73+ driver = new RemoteWebDriver (deployment .getServer ().getUrl (), browser .getCapabilities ());
7274 driver = new Augmenter ().augment (driver );
7375
76+ server = new NettyAppServer ();
77+ server .start ();
78+ }
79+
80+ @ Test
81+ @ Ignore (IE )
82+ @ Ignore (SAFARI )
83+ @ NotYetImplemented (EDGE )
84+ void ensureBiDiSessionCreation () {
7485 try (BiDi biDi = ((HasBiDi ) driver ).getBiDi ()) {
7586 BiDiSessionStatus status =
7687 biDi .send (
7788 new Command <>("session.status" , Collections .emptyMap (), BiDiSessionStatus .class ));
7889 assertThat (status ).isNotNull ();
79- assertThat (status .getMessage ()).isEqualTo ( "Session already started" );
90+ assertThat (status .getMessage ()).isNotEmpty ( );
8091 }
8192 }
8293
8394 @ Test
95+ @ Ignore (IE )
96+ @ Ignore (SAFARI )
97+ @ NotYetImplemented (EDGE )
8498 void canListenToLogs () throws ExecutionException , InterruptedException , TimeoutException {
85- Browser browser = Browser .FIREFOX ;
86-
87- Deployment deployment =
88- DeploymentTypes .STANDALONE .start (
89- browser .getCapabilities (),
90- new TomlConfig (
91- new StringReader (
92- "[node]\n "
93- + "selenium-manager = false\n "
94- + "driver-implementation = "
95- + browser .displayName ())));
96-
97- FirefoxOptions options = createFirefoxOptions ();
98- // Enable BiDi
99- options .setCapability ("webSocketUrl" , true );
100-
101- WebDriver driver = new RemoteWebDriver (deployment .getServer ().getUrl (), options );
10299 driver = new Augmenter ().augment (driver );
103100
104- AppServer server = new NettyAppServer ();
105- server .start ();
106-
107101 try (LogInspector logInspector = new LogInspector (driver )) {
108102 CompletableFuture <ConsoleLogEntry > future = new CompletableFuture <>();
109103 logInspector .onConsoleEntry (future ::complete );
@@ -120,34 +114,14 @@ void canListenToLogs() throws ExecutionException, InterruptedException, TimeoutE
120114 assertThat (logEntry .getType ()).isEqualTo ("console" );
121115 assertThat (logEntry .getLevel ()).isEqualTo (LogLevel .INFO );
122116 assertThat (logEntry .getMethod ()).isEqualTo ("log" );
123- assertThat (logEntry .getStackTrace ()).isNull ();
124117 }
125118 }
126119
127120 @ Test
121+ @ Ignore (IE )
122+ @ Ignore (SAFARI )
123+ @ NotYetImplemented (EDGE )
128124 void canNavigateToUrl () {
129- Browser browser = Browser .FIREFOX ;
130-
131- Deployment deployment =
132- DeploymentTypes .STANDALONE .start (
133- browser .getCapabilities (),
134- new TomlConfig (
135- new StringReader (
136- "[node]\n "
137- + "selenium-manager = false\n "
138- + "driver-implementation = "
139- + browser .displayName ())));
140-
141- FirefoxOptions options = createFirefoxOptions ();
142- // Enable BiDi
143- options .setCapability ("webSocketUrl" , true );
144-
145- WebDriver driver = new RemoteWebDriver (deployment .getServer ().getUrl (), options );
146- driver = new Augmenter ().augment (driver );
147-
148- AppServer server = new NettyAppServer ();
149- server .start ();
150-
151125 BrowsingContext browsingContext = new BrowsingContext (driver , WindowType .TAB );
152126
153127 String url = server .whereIs ("/bidi/logEntryAdded.html" );
@@ -158,7 +132,9 @@ void canNavigateToUrl() {
158132 assertThat (info .getUrl ()).contains ("/bidi/logEntryAdded.html" );
159133 }
160134
161- private FirefoxOptions createFirefoxOptions () {
162- return (FirefoxOptions ) Browser .FIREFOX .getCapabilities ();
135+ @ AfterEach
136+ void clean () {
137+ driver .quit ();
138+ server .stop ();
163139 }
164140}
0 commit comments