Skip to content

[🐛 Bug]: Cannot unwrap webdriver that was wrapped twice #16573

@asolntsev

Description

@asolntsev

Description

I wrap the webdriver twice.
And I want to unwrap it.
The unwrapping hangs forever. :(

Reproducible Code

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WrapsDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.events.EventFiringDecorator;
import org.openqa.selenium.support.events.WebDriverListener;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

import static org.assertj.core.api.Assertions.assertThat;

final class UnwrapWebdriverTest {
  private final WebDriver original = new ChromeDriver();

  @Test
  void canOpenBlankPage() {
    WebDriver decorated1 = new EventFiringDecorator<>(new WebDriverListener() {
    }).decorate(original);
    WebDriver decorated2 = new EventFiringDecorator<>(new WebDriverListener() {
    }).decorate(decorated1);

    assertThat(((WrapsDriver) decorated1).getWrappedDriver()).isSameAs(original);

    // Fail 1: Shouldn't this work?
    //assertThat(((WrapsDriver) decorated2).getWrappedDriver()).isSameAs(decorated1);

    // Fail 2: This hangs forever
    new WebDriverWait(decorated2, Duration.ofSeconds(2))
      .until((d) -> "zopa".equalsIgnoreCase(d.getTitle()));
  }

  @AfterEach
  void tearDown() {
    original.quit();
  }
}

Metadata

Metadata

Assignees

Labels

A-needs-triagingA Selenium member will evaluate this soon!I-defectSomething is not working as intended

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions