thefrontside / interactors

Composable page objects for components
https://frontside.com/interactors
MIT License
28 stars 3 forks source link

Ability to specify a Negative Context #290

Open cowboyd opened 2 months ago

cowboyd commented 2 months ago

I ran into a situation when using interactors on a project where there were two instances of a component on screen. One that was inside a TabPane, and one that was not. Let's call the component C

The containment hierarchy was:

- Parent
  - C()
  - Tabs()
    - C()

It is possible in this scenario to To interact with C(2) unambiguously, via:

Tabs().find(C())

But it is NOT possible to interact with C(1) unambiguously because there is no context you can specify in which C(2) is not also in that context.

There are a couple of workarounds:

  1. Create a filter on the DOM order, and use it to disambiguate
  2. Create standalone filter on C() to see if it was in a tab pane, or not.

But these are not ideal because neither of these filters are stable over time.

Ideally, we'd like to have a "negative context" specifier to say that I want to interact with C not within the context of Tabs:

C().outside(Tabs()).click()