Code location

  • Java Bindings: java/src/, java/test/
  • Grid Server: java/src/org/openqa/selenium/grid/

Common commands

  • Build: bazel build //java/...
  • Build Grid: bazel build grid

Testing

See java/TESTING.md

Code conventions

Interfaces

  • New methods added to existing interfaces must provide a default implementation, if possible.
  • Interfaces must not expose the native classes of their implementations.

Logging

import java.util.logging.Logger;
private static final Logger LOG = Logger.getLogger(MyClass.class.getName());

LOG.warning("actionable: something needs attention");
LOG.info("useful: server started on port 4444");
LOG.fine("diagnostic: request details for debugging");

Deprecation

@Deprecated(forRemoval = true)
public void legacyMethod() { }

Documentation

Use Javadoc for public APIs:

/**
 * Brief description.
 *
 * @param name description
 * @return description
 * @throws ExceptionType when condition
 */

Formatting

Java files are formatted with google-java-format (Google Java Style Guide). Run ./go format after changes; it will auto-fix all style issues.

Key rules enforced:

  • 2-space indentation (no tabs)
  • Column limit: 100 characters
  • Braces on the same line (K&R style), including single-statement bodies
  • Imports: organized and sorted consistently