Skip to content

Commit 36f83af

Browse files
committed
Simple the changes
Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent 8467750 commit 36f83af

File tree

3 files changed

+30
-40
lines changed

3 files changed

+30
-40
lines changed

Diff for: java/src/org/openqa/selenium/grid/data/DefaultSlotMatcher.java

+26-36
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,38 @@ public boolean matches(Capabilities stereotype, Capabilities capabilities) {
7070
return false;
7171
}
7272

73-
if (!platformVersionMatch(stereotype, capabilities)) {
73+
if (!extensionCapabilitiesMatch(stereotype, capabilities)) {
7474
return false;
7575
}
7676

77-
if (!extensionCapabilitiesMatch(stereotype, capabilities)) {
77+
if (!platformVersionMatch(stereotype, capabilities)) {
7878
return false;
7979
}
8080

8181
// At the end, a simple browser, browserVersion and platformName match
82-
boolean browserNameMatch = browserNameMatch(stereotype, capabilities);
83-
boolean browserVersionMatch = browserVersionMatch(stereotype, capabilities);
84-
boolean platformNameMatch = platformNameMatch(stereotype, capabilities);
85-
82+
boolean browserNameMatch =
83+
(capabilities.getBrowserName() == null || capabilities.getBrowserName().isEmpty())
84+
|| Objects.equals(stereotype.getBrowserName(), capabilities.getBrowserName())
85+
|| matchConditionToRemoveCapability(capabilities);
86+
boolean browserVersionMatch =
87+
(capabilities.getBrowserVersion() == null
88+
|| capabilities.getBrowserVersion().isEmpty()
89+
|| Objects.equals(capabilities.getBrowserVersion(), "stable"))
90+
|| browserVersionMatch(stereotype.getBrowserVersion(), capabilities.getBrowserVersion())
91+
|| matchConditionToRemoveCapability(capabilities);
92+
boolean platformNameMatch =
93+
capabilities.getPlatformName() == null
94+
|| Objects.equals(stereotype.getPlatformName(), capabilities.getPlatformName())
95+
|| (stereotype.getPlatformName() != null
96+
&& stereotype.getPlatformName().is(capabilities.getPlatformName()));
8697
return browserNameMatch && browserVersionMatch && platformNameMatch;
8798
}
8899

89-
private boolean initialMatch(Capabilities stereotype, Capabilities capabilities) {
100+
private boolean browserVersionMatch(String stereotype, String capabilities) {
101+
return new SemanticVersionComparator().compare(stereotype, capabilities) == 0;
102+
}
103+
104+
private Boolean initialMatch(Capabilities stereotype, Capabilities capabilities) {
90105
return stereotype.getCapabilityNames().stream()
91106
// Matching of extension capabilities is implementation independent. Skip them
92107
.filter(name -> !name.contains(":"))
@@ -112,7 +127,7 @@ private boolean initialMatch(Capabilities stereotype, Capabilities capabilities)
112127
.orElse(true);
113128
}
114129

115-
private boolean managedDownloadsEnabled(Capabilities stereotype, Capabilities capabilities) {
130+
private Boolean managedDownloadsEnabled(Capabilities stereotype, Capabilities capabilities) {
116131
// First lets check if user wanted a Node with managed downloads enabled
117132
Object raw = capabilities.getCapability("se:downloadsEnabled");
118133
if (raw == null || !Boolean.parseBoolean(raw.toString())) {
@@ -125,7 +140,7 @@ private boolean managedDownloadsEnabled(Capabilities stereotype, Capabilities ca
125140
return raw != null && Boolean.parseBoolean(raw.toString());
126141
}
127142

128-
private boolean platformVersionMatch(Capabilities stereotype, Capabilities capabilities) {
143+
private Boolean platformVersionMatch(Capabilities stereotype, Capabilities capabilities) {
129144
/*
130145
This platform version match is not W3C compliant but users can add Appium servers as
131146
Nodes, so we avoid delaying the match until the Slot, which makes the whole matching
@@ -142,7 +157,7 @@ private boolean platformVersionMatch(Capabilities stereotype, Capabilities capab
142157
.orElse(true);
143158
}
144159

145-
private boolean extensionCapabilitiesMatch(Capabilities stereotype, Capabilities capabilities) {
160+
private Boolean extensionCapabilitiesMatch(Capabilities stereotype, Capabilities capabilities) {
146161
/*
147162
We match extension capabilities when they are not prefixed with any of the
148163
EXTENSION_CAPABILITIES_PREFIXES items. Also, we match them only when the capabilities
@@ -172,32 +187,7 @@ private boolean extensionCapabilitiesMatch(Capabilities stereotype, Capabilities
172187
.orElse(true);
173188
}
174189

175-
private boolean browserNameMatch(Capabilities stereotype, Capabilities capabilities) {
176-
return (capabilities.getBrowserName() == null || capabilities.getBrowserName().isEmpty())
177-
|| Objects.equals(stereotype.getBrowserName(), capabilities.getBrowserName())
178-
|| specificRelayCapabilitiesAppMatch(capabilities);
179-
}
180-
181-
private boolean browserVersionMatch(String stereotype, String capabilities) {
182-
return new SemanticVersionComparator().compare(stereotype, capabilities) == 0;
183-
}
184-
185-
private boolean browserVersionMatch(Capabilities stereotype, Capabilities capabilities) {
186-
return (capabilities.getBrowserVersion() == null
187-
|| capabilities.getBrowserVersion().isEmpty()
188-
|| Objects.equals(capabilities.getBrowserVersion(), "stable"))
189-
|| browserVersionMatch(stereotype.getBrowserVersion(), capabilities.getBrowserVersion())
190-
|| specificRelayCapabilitiesAppMatch(capabilities);
191-
}
192-
193-
private boolean platformNameMatch(Capabilities stereotype, Capabilities capabilities) {
194-
return capabilities.getPlatformName() == null
195-
|| Objects.equals(stereotype.getPlatformName(), capabilities.getPlatformName())
196-
|| (stereotype.getPlatformName() != null
197-
&& stereotype.getPlatformName().is(capabilities.getPlatformName()));
198-
}
199-
200-
public static boolean specificRelayCapabilitiesAppMatch(Capabilities capabilities) {
190+
public static Boolean matchConditionToRemoveCapability(Capabilities capabilities) {
201191
/*
202192
This match is specific for the Relay capabilities that are related to the Appium server for native application.
203193
- If browserName is defined then we always assume it’s a hybrid browser session, so no app-related caps should be provided

Diff for: java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
package org.openqa.selenium.grid.node.relay;
1919

20-
import static org.openqa.selenium.grid.data.DefaultSlotMatcher.specificRelayCapabilitiesAppMatch;
20+
import static org.openqa.selenium.grid.data.DefaultSlotMatcher.matchConditionToRemoveCapability;
2121
import static org.openqa.selenium.remote.RemoteTags.CAPABILITIES;
2222
import static org.openqa.selenium.remote.RemoteTags.CAPABILITIES_EVENT;
2323
import static org.openqa.selenium.remote.tracing.AttributeKey.DOWNSTREAM_DIALECT;
@@ -145,7 +145,7 @@ public Capabilities filterRelayCapabilities(Capabilities capabilities) {
145145
Remove browserName capability if 'appium:app' (or similar based on driver) is present as it breaks appium tests when app is provided
146146
they are mutually exclusive
147147
*/
148-
if (specificRelayCapabilitiesAppMatch(capabilities)) {
148+
if (matchConditionToRemoveCapability(capabilities)) {
149149
MutableCapabilities filteredStereotype = new MutableCapabilities(capabilities);
150150
filteredStereotype.setCapability(CapabilityType.BROWSER_NAME, (String) null);
151151
return filteredStereotype;

Diff for: java/test/org/openqa/selenium/grid/data/DefaultSlotMatcherTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public void testSpecificRelayCapabilitiesAppMatch() {
6666
"Android",
6767
"appium:automationName",
6868
"uiautomator2");
69-
assertThat(DefaultSlotMatcher.specificRelayCapabilitiesAppMatch(capabilitiesWithApp)).isTrue();
69+
assertThat(DefaultSlotMatcher.matchConditionToRemoveCapability(capabilitiesWithApp)).isTrue();
7070
capabilitiesWithApp =
7171
new ImmutableCapabilities(
7272
"browserName",
@@ -77,7 +77,7 @@ public void testSpecificRelayCapabilitiesAppMatch() {
7777
"Android",
7878
"appium:automationName",
7979
"uiautomator2");
80-
assertThat(DefaultSlotMatcher.specificRelayCapabilitiesAppMatch(capabilitiesWithApp)).isFalse();
80+
assertThat(DefaultSlotMatcher.matchConditionToRemoveCapability(capabilitiesWithApp)).isFalse();
8181
}
8282

8383
@Test

0 commit comments

Comments
 (0)