2

I am writing a test which clicks on certain filters and I notice some discrepancies between browsers. For example On major browsers(Chrome, Firefox, Safari) there are check boxes shown exactly in this format: Checkers, Cheese, Salsa, Butter. When I run the test on IE11 those strings are lower case and because it is lower case, my test is failing. To combat that I was hoping to use regular expressions. The function I am using to click those checkboxes is reusable.

I am puzzled because I am trying to pass the string in the regular expression but the test fails. I then went on to create a template literal and someone pass the string in the regular expression that way and the test still failed. My question is, is there a smarter way to pass in a string variable into a regular expression?

The filterPage looks like:

     export default class OrderHistory {
      constructor() {
          this.filter = Selector(
                ".filterCheckbox"

}

async selectFilter(text) {
    await t.click(this.filter.withText(`/${text}`/i));

}

The test page looks like:

 test(“click the cheese filter”, async t => {
   const cheeseFilter = Cheese;

   await filterPage.selectFilter(cheeseFilter);

});

Roosevelt H
  • 340
  • 2
  • 9
  • 1
    Possible duplicate of [How do you use a variable in a regular expression?](https://stackoverflow.com/questions/494035/how-do-you-use-a-variable-in-a-regular-expression) – adiga May 15 '19 at 19:24
  • "[I]s there a smarter way to pass in a string variable into a regular expression"? Yes. [`new RegExp(string)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp). – Jordan Running May 15 '19 at 19:25
  • You can use `new RegExp(text,"i")` – adiga May 15 '19 at 19:25

1 Answers1

5

RegExp constructor might do the job if you need to build the regex dynamically, since it can also accept a string.

new RegExp(text, 'i');
Andrea Carraro
  • 6,599
  • 3
  • 24
  • 50