'Detox get length of element

Hi i'm using detox and i would like to know how can I get the number of matches to one element(length).

For example "card" match three times, how can I get the three.

const z = await element(by.id("card"))

https://github.com/wix/Detox/blob/master/docs/APIRef.Expect.md https://github.com/wix/Detox/blob/master/docs/APIRef.Matchers.md

They don't support it in the API /:

z output:

Element {
  _invocationManager: InvocationManager {
    executionHandler: Client {
      isConnected: true,
      configuration: [Object],
      ws: [AsyncWebSocket],
      slowInvocationStatusHandler: null,
      slowInvocationTimeout: undefined,
      successfulTestRun: true,
      pandingAppCrash: undefined
    }
  },
  matcher: Matcher { predicate: { type: 'id', value: 'card' } }
}


Solution 1:[1]

A workaround could be

async function getMatchesLength(elID) {
    let index = 0;

    try {
        while (true) {
            await expect(element(by.id(elID)).atIndex(index)).toExist();
            index++;
        }
    } catch (error) {
        console.log('find ', index, 'matches');
    }

    return index;
}

then you can use

const length = await getMatchesLength('card');
jestExpect(length).toBe(3);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pedro Trogo