async function _press(keys, options) {
  await doActionAwaitingNavigation(options, async () => {
    for (let i = 0; i < keys.length; i++) {
      await inputHandler.down(keys[i], options);
    }
    if (options?.delay) {
      await new Promise((f) => {
        setTimeout(f, options.delay);
      });
    }
    const _keys = keys.reverse();
    for (let i = 0; i < _keys.length; i++) {
      await inputHandler.up(_keys[i]);
    }
  });
  descEvent.emit("success", `Pressed the ${keys.join(" + ")} key`);
}
Presses the given keys.

@example
await press('Enter')
@example
await press('a')
@example
await press(['Shift', 'ArrowLeft', 'ArrowLeft'])
@example
awaitpress('a', { waitForNavigation: false })

@param {string | Array<string> } keys - Name of keys to press. See [USKeyboardLayout](https://github.com/getgauge/taiko/blob/master/lib/data/USKeyboardLayout.js) for a list of all key names.
@param {Object} options
@param {string} [options.text = ""] - If specified, generates an input event with this text.
@param {number} [options.delay=0] - Time to wait between keydown and keyup in milliseconds.
@param {boolean} [options.waitForNavigation=true] - Wait for navigation after the click. Default navigation timeout is 30 seconds, to override pass `{ navigationTimeout: 10000 }` in `options` parameter.
@param {number} [options.waitForStart=100] - wait for navigation to start.
@param {number} [options.navigationTimeout=30000] - Navigation timeout value in milliseconds for navigation after click.
@param {string[]} [options.waitForEvents = []] - Events available to wait for ['DOMContentLoaded', 'loadEventFired', 'networkAlmostIdle', 'networkIdle', 'firstPaint', 'firstContentfulPaint', 'firstMeaningfulPaint', 'targetNavigated']

@returns {Promise<void>}