async function checkWorkflow(steps, expected) {
  return new Promise(resolve => {
    /** @type {number[]} */
    const transitions = [];
    steps.addEventListener('transition', event => {
      const _event = /** @type {CustomEvent} */ (event);
      if (!transitions.length) {
        transitions.push(_event.detail.fromStep.number);
      }
      transitions.push(_event.detail.toStep.number);
    });
    setTimeout(() => {
      // allow time for other transitions to happen if any
      const transitionsString = transitions.join(' => ');
      expect(transitionsString).to.equal(expected.transitions, 'transition flow is different');
      const statusesString = /** @type {LionStep[]} */ (Array.from(steps.children))
        .map(step => step.status)
        .join(' ');
      expect(statusesString).to.equal(expected.statuses, 'steps statuses are different');
      resolve();
    });
  });
}
@param {LionSteps} steps
@param {Object} expected
@param {string} expected.transitions
@param {string} expected.statuses
@returns {Promise<void>}