Работа с несколькими цепочками приводит к кипарису - PullRequest
0 голосов
/ 24 января 2020

Поскольку Cypress не может легко использовать async / await , чтобы использовать несколько связанных значений, сейчас я делаю это:

const getScrubPosition = () => cy.getState().its('meta').its('scrubPosition');

const getScrollBar = () => cy.getByTestId('SCROLL_BAR').then(([bar]) => bar);

const getGutter = () => cy.getByTestId('GUTTER').then(([bar]) => bar);

// my workaround
const getScrubScrollGutter = () => getScrubPosition().then(initialPos =>
  getScrollBar().then(([bar]) =>
     getGutter().then(([gutter]) =>
       ({ initialPos, bar, gutter }))));

it('is ridiculous', () => {
  getScrubPosition().then(initialPos => {
    getScrollBarWidth().then(initialWidth => {
      getScrollContainerWidth().then(containerWidth => {
        // do something with initialPos, initialWidth, and containerWidth
      });
    });
  });

it('>90 frames, with current series', () => {
  clickSeries(1, 3); // x2x4, 94 frames, including pending
  getScrubScrollGutter().then(({ initialPos, bar, gutter }) => {
    expectPendingShown(true);
    expectScrollBar();

    // the bar shouldn't be wider than the gutter
    expect(bar.offsetWidth).to.be.lessThan(gutter.offsetWidth);

    // the right of the bar should be aligned with the right of the gutter
    expect(rightEdgeOf(bar)).to.equal(rightEdgeOf(gutter));
    debugger

    // the bar shouldn't be to the left of the gutter
    expect(bar.offsetLeft).to.be.greaterThan(gutter.offsetLeft);
  });

Должно быть лучше способ сделать это, верно? Упомянутая выше проблема с github говорит о вещах типа

cy.get('something')
  .then(x => doSomethingTo(x))
  .then(y => console.log('please help'))

et c. Но мне трудно это понять - или, если я это понимаю, на самом деле он не передает все значения в дальнейшие контексты (т. Е. Я не думаю, что вы можете использовать x в третья строка из того, что я только что написал.)

А как насчет Promise.all?

Да, я пробовал это. Пожалуйста, дайте Promise.all связанный ответ, только если вы действительно смогли использовать его в Cypress.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...