diff --git a/java/src/org/openqa/selenium/grid/node/SessionFactory.java b/java/src/org/openqa/selenium/grid/node/SessionFactory.java index b2133b7fcf921..41782dcd3060b 100644 --- a/java/src/org/openqa/selenium/grid/node/SessionFactory.java +++ b/java/src/org/openqa/selenium/grid/node/SessionFactory.java @@ -29,4 +29,5 @@ public interface SessionFactory extends Function>, Predicate { + Capabilities getStereotype(); } diff --git a/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java b/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java index 522d23ccff964..83eb2a3723745 100644 --- a/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java +++ b/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java @@ -95,6 +95,11 @@ public DriverServiceSessionFactory( this.sessionCapabilitiesMutator = new SessionCapabilitiesMutator(this.stereotype); } + @Override + public Capabilities getStereotype() { + return stereotype; + } + @Override public boolean test(Capabilities capabilities) { return predicate.test(capabilities); diff --git a/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java b/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java index ca52c43c6c836..68abafccb53ba 100644 --- a/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java +++ b/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java @@ -651,7 +651,12 @@ private void report(Map.Entry> entry) StringBuilder caps = new StringBuilder(); try (JsonOutput out = JSON.newOutput(caps)) { out.setPrettyPrint(false); - out.write(entry.getKey().getCanonicalCapabilities()); + Optional optionalSessionFactory = entry.getValue().stream().findFirst(); + if (optionalSessionFactory.isPresent()) { + out.write(optionalSessionFactory.get().getStereotype()); + } else { + out.write(entry.getKey().getCanonicalCapabilities()); + } } LOG.info(String.format( diff --git a/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java b/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java index 923a18bc968cb..020c2363a9a78 100644 --- a/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java +++ b/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java @@ -134,6 +134,11 @@ public DockerSessionFactory( this.slotMatcher = new DefaultSlotMatcher(); } + @Override + public Capabilities getStereotype() { + return stereotype; + } + @Override public boolean test(Capabilities capabilities) { return slotMatcher.matches(stereotype, capabilities); diff --git a/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java b/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java index 448cf0b73abcd..2bc608d5a00fa 100644 --- a/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java +++ b/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java @@ -97,6 +97,11 @@ public RelaySessionFactory( .copyOf(Require.nonNull("Stereotype", stereotype)); } + @Override + public Capabilities getStereotype() { + return stereotype; + } + @Override public boolean test(Capabilities capabilities) { // If a request reaches this point is because the basic match of W3C caps has already been done. diff --git a/java/test/org/openqa/selenium/grid/graphql/GraphqlHandlerTest.java b/java/test/org/openqa/selenium/grid/graphql/GraphqlHandlerTest.java index 05ed05d53bffa..7cf9aea93fb5f 100644 --- a/java/test/org/openqa/selenium/grid/graphql/GraphqlHandlerTest.java +++ b/java/test/org/openqa/selenium/grid/graphql/GraphqlHandlerTest.java @@ -254,6 +254,11 @@ void shouldBeAbleToGetUrlsOfAllNodes() throws URISyntaxException { String nodeUri = "http://localhost:5556"; Node node = LocalNode.builder(tracer, bus, new URI(nodeUri), publicUri, registrationSecret) .add(stereotype, new SessionFactory() { + @Override + public Capabilities getStereotype() { + return null; + } + @Override public Either apply( CreateSessionRequest createSessionRequest) { diff --git a/java/test/org/openqa/selenium/grid/node/config/NodeOptionsTest.java b/java/test/org/openqa/selenium/grid/node/config/NodeOptionsTest.java index 0f6fca193d0a7..f3644c8c12c21 100644 --- a/java/test/org/openqa/selenium/grid/node/config/NodeOptionsTest.java +++ b/java/test/org/openqa/selenium/grid/node/config/NodeOptionsTest.java @@ -613,6 +613,11 @@ public static class HelperFactory { public static SessionFactory create(Config config, Capabilities caps) { return new SessionFactory() { + @Override + public Capabilities getStereotype() { + return null; + } + @Override public Either apply( CreateSessionRequest createSessionRequest) { diff --git a/java/test/org/openqa/selenium/grid/testing/TestSessionFactory.java b/java/test/org/openqa/selenium/grid/testing/TestSessionFactory.java index d8b0d40f1cbff..42bfa12460bdf 100644 --- a/java/test/org/openqa/selenium/grid/testing/TestSessionFactory.java +++ b/java/test/org/openqa/selenium/grid/testing/TestSessionFactory.java @@ -57,6 +57,11 @@ public TestSessionFactory(Capabilities stereotype, BiFunction apply(CreateSessionRequest sessionRequest) { SessionId id = new SessionId(UUID.randomUUID());