我无法让 Selenium TestContainers 为我记录测试。
我在 Quarkus 中使用 TestContainers。Quarkus 处理在类中设置测试资源的方式QuarkusTestResourceLifecycleManager
,如下所示:
@Slf4j
@Testcontainers //not working
public class TestResourceLifecycleManager implements QuarkusTestResourceLifecycleManager {
//...
@Container //not working
private static BrowserWebDriverContainer<?> BROWSER_CONTAINER = null;
//...
@Override
public Map<String, String> start() {
File recordingDir = new File("build/seleniumRecordings/");
recordingDir.mkdir();
BROWSER_CONTAINER = new BrowserWebDriverContainer<>()
.withCapabilities(new FirefoxOptions())
.withRecordingMode(RECORD_ALL, recordingDir);
BROWSER_CONTAINER.start();
}
}
这在功能上有效,因为我能够通过测试容器使用 Selenium 并且测试工作正常。但是,从未触发记录,因为我没有在测试类中设置浏览器容器。
我还尝试将 testcontainer 移动到我的 UI 测试的超类中。这似乎在功能上再次起作用,并且显然触发了录制,但我只得到一个flv
大约 149kB 的文件并且没有播放任何东西(大约 10 个单独的 UI 测试)。此外,这似乎不适用于多配置文件测试(交换配置文件、重新启动 Quarkus 和核对静态成员的测试),以及在不同配置文件中断的初始设置之后的测试。
@Slf4j
@Testcontainers
public class WebUiTest extends RunningServerTest implements TestLifecycleAware {
private static final File recordingDir = new File("build/seleniumRecordings/");
@SuppressWarnings({"unused", "FieldCanBeLocal", "FieldMayBeFinal"})
@Container
private static BrowserWebDriverContainer<?> BROWSER_CONTAINER = new BrowserWebDriverContainer<>()
.withCapabilities(new FirefoxOptions())
.withRecordingMode(RECORD_ALL, recordingDir);
static {
//required for tests to work
BROWSER_CONTAINER.start();
}
}
有任何想法吗?最好的情况下,我希望能够以标准的 junit@AfterEach
方法触发录制,但所需的参数 ( TestDescription description, Optional<Throwable> throwable
) 不可用......