Search code examples
node.jsprotractoraureliae2e-testing

Aurelia e2e: Check if span within a div contains certain text


I want to see if the text contained in a span which itself is contained in a div contains certain text.

This is the HTML:

<div class="funds">
    <span>banking</span>
    <span class="m-l-sm">
        <b>EUR 1,000</b>
    </span><!--anchor-->
</div>

I want to check if <span class="m-l-sm"> contains 'EUR'.

One way I tried to do this (among several others) is:

var checkFunds = element(by.id("m-l-sm"));
if (checkFunds.getText().toContain('EUR'&'GBP')) {
    //do something
}

I get an error saying .toContain() is not a function.

I'm at a bit of a loss as to how to proceed.


Solution

  • .toContain() is a Jasmine matcher's method. It is usually used for assertions, e.g.:

    expect(checkFunds.getText()).toContain('EUR');
    

    Since it looks like you actually want to do something if you see a substring in a string - you need to get to the actual text of the element, which means you need to resolve the promise returned by .getText(). Then, you can check if substring EUR is inside the text:

    var checkFunds = element(by.id("m-l-sm"));
    checkFunds.getText().then(function (text) {
        if (text.indexOf('EUR') >= 0) {
            // do something
        }
    });