<h3 dir="auto">System info</h3>
<ul dir="auto">
<li>Playwright Version: [v1.32.0 (Java)]</li>
<li>Operating System: [macOS 13.3]</li>
<li>Browser: [Firefox, WebKit, (Chromium unclear)]</li>
<li>Other info:</li>
</ul>
<h3 dir="auto">Source code</h3>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> I provided exact source code that allows reproducing the issue locally.</li>
</ul>




<p dir="auto">My website asynchronously navigates to another page while I am trying to use locators like this in a loop (because I am waiting for one of two locators to become visible):</p>
<div class="highlight highlight-source-java notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="navbar
    .locator(LOGGED_IN_NAVBAR_SELECTOR)
    .locator(ACCOUNT_MENU_BUTTON_SELECTOR)
    .isVisible();"><pre class="notranslate"><span class="pl-s1">navbar</span>
    .<span class="pl-en">locator</span>(<span class="pl-c1">LOGGED_IN_NAVBAR_SELECTOR</span>)
    .<span class="pl-en">locator</span>(<span class="pl-c1">ACCOUNT_MENU_BUTTON_SELECTOR</span>)
    .<span class="pl-en">isVisible</span>();</pre></div>
<p dir="auto">This results in an error "Execution context was destroyed". I have reproduced this on Webkit and Firefox, but could not manage to reproduce it with Chromium. It's not happening every time because of the racy nature of the async navigation. I don't know if Chromium doesn't have this problem or the timing is just different, thereby avoiding the error.</p>
<p dir="auto">Stack trace on Webkit:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="com.microsoft.playwright.PlaywrightException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/frames.js:1446:30)
    at WKPage._removeContextsForFrame (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:453:32)
    at WKPage._onFrameNavigated (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:438:10)
    at WKSession.&lt;anonymous&gt; (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:389:127)
    at WKSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkConnection.js:172:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}

	at com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:54)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:111)
	at com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:126)
	at com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:102)
	at com.microsoft.playwright.impl.FrameImpl.isVisibleImpl(FrameImpl.java:641)
	at com.microsoft.playwright.impl.FrameImpl.lambda$isVisible$29(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)
	at com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:87)
	at com.microsoft.playwright.impl.FrameImpl.isVisible(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LocatorImpl.isVisible(LocatorImpl.java:374)
	at com.microsoft.playwright.Locator.isVisible(Locator.java:3668)
        &lt;... project specific frames ...&gt;
Caused by: com.microsoft.playwright.impl.DriverException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/frames.js:1446:30)
    at WKPage._removeContextsForFrame (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:453:32)
    at WKPage._onFrameNavigated (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:438:10)
    at WKSession.&lt;anonymous&gt; (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:389:127)
    at WKSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkConnection.js:172:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}
	at com.microsoft.playwright.impl.Connection.dispatch(Connection.java:226)
	at com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:206)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:109)
	... 53 more"><pre class="notranslate"><code class="notranslate">com.microsoft.playwright.PlaywrightException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/frames.js:1446:30)
    at WKPage._removeContextsForFrame (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:453:32)
    at WKPage._onFrameNavigated (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:438:10)
    at WKSession.&lt;anonymous&gt; (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:389:127)
    at WKSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkConnection.js:172:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}

	at com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:54)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:111)
	at com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:126)
	at com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:102)
	at com.microsoft.playwright.impl.FrameImpl.isVisibleImpl(FrameImpl.java:641)
	at com.microsoft.playwright.impl.FrameImpl.lambda$isVisible$29(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)
	at com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:87)
	at com.microsoft.playwright.impl.FrameImpl.isVisible(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LocatorImpl.isVisible(LocatorImpl.java:374)
	at com.microsoft.playwright.Locator.isVisible(Locator.java:3668)
        &lt;... project specific frames ...&gt;
Caused by: com.microsoft.playwright.impl.DriverException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/frames.js:1446:30)
    at WKPage._removeContextsForFrame (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:453:32)
    at WKPage._onFrameNavigated (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:438:10)
    at WKSession.&lt;anonymous&gt; (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkPage.js:389:127)
    at WKSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-4016531511947763690/package/lib/server/webkit/wkConnection.js:172:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}
	at com.microsoft.playwright.impl.Connection.dispatch(Connection.java:226)
	at com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:206)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:109)
	... 53 more
</code></pre></div>
<p dir="auto">Firefox stack trace:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="com.microsoft.playwright.PlaywrightException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/frames.js:1446:30)
    at FFPage._onExecutionContextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:141:19)
    at FFPage._onExecutionContextsCleared (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:144:88)
    at FFSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffConnection.js:204:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}

	at com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:54)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:111)
	at com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:126)
	at com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:102)
	at com.microsoft.playwright.impl.FrameImpl.isVisibleImpl(FrameImpl.java:641)
	at com.microsoft.playwright.impl.FrameImpl.lambda$isVisible$29(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)
	at com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:87)
	at com.microsoft.playwright.impl.FrameImpl.isVisible(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LocatorImpl.isVisible(LocatorImpl.java:374)
	at com.microsoft.playwright.Locator.isVisible(Locator.java:3668)
	&lt; ... project specific frames ... &gt;
Caused by: com.microsoft.playwright.impl.DriverException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator(&quot;app-navbar&quot;).locator(&quot;app-logged-in-navbar&quot;).locator(&quot;button:has-text('arrow_drop_down')&quot;)
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/frames.js:1446:30)
    at FFPage._onExecutionContextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:141:19)
    at FFPage._onExecutionContextsCleared (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:144:88)
    at FFSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffConnection.js:204:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}
	at com.microsoft.playwright.impl.Connection.dispatch(Connection.java:226)
	at com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:206)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:109)
	... 53 more"><pre class="notranslate"><code class="notranslate">com.microsoft.playwright.PlaywrightException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/frames.js:1446:30)
    at FFPage._onExecutionContextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:141:19)
    at FFPage._onExecutionContextsCleared (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:144:88)
    at FFSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffConnection.js:204:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}

	at com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:54)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:111)
	at com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:126)
	at com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:102)
	at com.microsoft.playwright.impl.FrameImpl.isVisibleImpl(FrameImpl.java:641)
	at com.microsoft.playwright.impl.FrameImpl.lambda$isVisible$29(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)
	at com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:87)
	at com.microsoft.playwright.impl.FrameImpl.isVisible(FrameImpl.java:627)
	at com.microsoft.playwright.impl.LocatorImpl.isVisible(LocatorImpl.java:374)
	at com.microsoft.playwright.Locator.isVisible(Locator.java:3668)
	&lt; ... project specific frames ... &gt;
Caused by: com.microsoft.playwright.impl.DriverException: Error {
  message='Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
  name='Error
  stack='Error: Execution context was destroyed, most likely because of a navigation
=========================== logs ===========================
  checking visibility of locator("app-navbar").locator("app-logged-in-navbar").locator("button:has-text('arrow_drop_down')")
============================================================
    at Frame._contextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/frames.js:1446:30)
    at FFPage._onExecutionContextDestroyed (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:141:19)
    at FFPage._onExecutionContextsCleared (/private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffPage.js:144:88)
    at FFSession.emit (node:events:513:28)
    at /private/var/folders/l5/mt5xnj_14rn9j4lsnfs5n9b40000gn/T/playwright-java-12798600472171551690/package/lib/server/firefox/ffConnection.js:204:41
    at runNextTicks (node:internal/process/task_queues:60:5)
    at process.processImmediate (node:internal/timers:447:9)
}
	at com.microsoft.playwright.impl.Connection.dispatch(Connection.java:226)
	at com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:206)
	at com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:109)
	... 53 more
</code></pre></div>
<p dir="auto">This is actually the same issue as <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1346215944" data-permission-text="Title is private" data-url="https://github.com/microsoft/playwright/issues/16720" data-hovercard-type="issue" data-hovercard-url="/microsoft/playwright/issues/16720/hovercard" href="https://github.com/microsoft/playwright/issues/16720">#16720</a><br>
The solution there was to use <code class="notranslate">assertThat(locator).isVisible</code>.</p>
<p dir="auto">This doesn't work here, because I am manually waiting for one of two conditions to occur, so I need to use <code class="notranslate">Locator.isVisible</code>.</p>
<p dir="auto">Previously this was "solved" (?) by putting a <code class="notranslate">Page.waitForLoadState(LoadState.NETWORKIDLE)</code> in front of the visibility checking loop. This presumably worked because the async navigation happens shortly after loading the page, so it would have happened during the NETWORKIDLE waiting, after which the execution context is stable.</p>
<p dir="auto">I now removed the <code class="notranslate">waitForLoadState</code> because NETWORKIDLE is discouraged, and asserting for web elements is recommended, per <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1701622812" data-permission-text="Title is private" data-url="https://github.com/microsoft/playwright/issues/22897" data-hovercard-type="issue" data-hovercard-url="/microsoft/playwright/issues/22897/hovercard?comment_id=1540452266&amp;comment_type=issue_comment" href="https://github.com/microsoft/playwright/issues/22897#issuecomment-1540452266">#22897 (comment)</a></p>
<p dir="auto">But then this bug got triggered instead.</p>
<p dir="auto">I would like to suggest an enhancement for the Playwright testing framework. Currently, when using the codegen/selector picker feature, it would be beneficial to have the ability to exclude certain types of selectors from being generated. For example, in cases where I am using a framework that assigns a unique ID to each element, I would like to disable the "#ids" selector option to prevent the codegen from randomly selecting one of these dynamically generated IDs.</p>
<p dir="auto"><strong>Proposed Solution:</strong><br>
I propose two possible solutions to address this issue:</p>
<ul dir="auto">
<li>
<p dir="auto">Ability to Eliminate Selectors: It would be helpful to have a configuration option or flag that allows users to specify certain types of selectors to be excluded from the codegen/selector picker. This way, I can indicate that the "#ids" selector should be ignored, and the codegen will not generate code using this selector type.</p>
</li>
<li>
<p dir="auto">Selection Range of Available Selectors: Alternatively, providing a range of available selectors to choose from during code generation would also be beneficial. This would allow me to manually select the desired selector type from the available options, excluding the ones I do not wish to use, such as "#ids".</p>
</li>
</ul>
<p dir="auto">I believe these enhancements would greatly improve the flexibility and usability of the Playwright testing framework, especially in scenarios where specific selectors need to be ignored or selected manually.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer" href="https://user-images.githubusercontent.com/54599584/239590508-ec7e04c2-c9e8-4385-8c3d-08a5ad3745d5.png"><img src="https://user-images.githubusercontent.com/54599584/239590508-ec7e04c2-c9e8-4385-8c3d-08a5ad3745d5.png" alt="image" style="max-width: 100%;"></a></p>
<p dir="auto">examples how Aqua (Jetbrains Testing IDE) implemented an feature simular<br>
<a target="_blank" rel="noopener noreferrer" href="https://user-images.githubusercontent.com/54599584/239590661-d7e76201-ee33-4ded-9adc-626ef18df318.png"><img src="https://user-images.githubusercontent.com/54599584/239590661-d7e76201-ee33-4ded-9adc-626ef18df318.png" alt="image" style="max-width: 100%;"></a><br>
<a target="_blank" rel="noopener noreferrer" href="https://user-images.githubusercontent.com/54599584/239590687-09c21c6f-a0b6-49d9-ae2b-42536046b6fe.png"><img src="https://user-images.githubusercontent.com/54599584/239590687-09c21c6f-a0b6-49d9-ae2b-42536046b6fe.png" alt="image" style="max-width: 100%;"></a></p>