Доступ к избыточному состоянию во время тестирования Selenium - PullRequest
0 голосов
/ 19 февраля 2020

Обмен рецептами здесь,

Для моего приложения я хотел автоматизировать пользовательское тестирование PoV с помощью Selenium и сказал себе, что возможность читать состояние и отправлять избыточные действия через Selenium была бы замечательной.

Селен управляется с NodeJs.

В node JS для отправки в приложение действия Redux:

const state = await driver
      .executeAsyncScript(
        "window.stCap({action: arguments[0], cb: arguments[arguments.length - 1]});",
        { type: "global_ST_CAP_GET" }
      )
  • Arg0 - это избыточное действие (здесь оно называется «global_ST_CAP_GET»)
  • Arg1 автоматически добавляется driver.executeAsyncScript, это функция обратного вызова

В одном из файлов помощников:

let globalActionRequest;

export const globalActionRequestSet = ar => {
  globalActionRequest = ar;
};

window.stCap = function({ action, cb }) {
    globalActionRequest({
    ...action,
    cb
  });
};
  • stCap вызывает функцию, установленную в globalActionRequest который отправит событие в промежуточное программное обеспечение redux

В одной из лучших инициализаций компонента реакции (чтобы иметь возможность "войти" в мир избыточности ...), поместите в globalActionRequest функцию, предоставляемую mapDispatchToProps

import { globalActionRequestSet } from "...appropriate file..."

class ... extends React.component {
    constructor(props) {
        super(props)
        globalActionRequestSet(props.actionRequest)
    }
    ...
}

mapDispatchToProps = {
    actionRequest: action => action
}
  • Здесь код, управляющий Selenium, может отправлять любое избыточное действие в ваше приложение.

И, наконец, в файле "sagas" выполните действие, чтобы отправить обратно состояние (которое будет использоваться позже в коде, управляющем селеном)

const global_ST_CAP_GET = function* ({cb}) {
    const state = yield sagas.select(state => state);
    cb(state);
}

// to add into root sagas
fork(function*() {
    yield takeEvery("global_ST_CAP_GET", global_ST_CAP_GET);
})

С Этот трюк возможен с помощью одного инструмента (селен) для тестирования внешнего элемента приложения, но также и внутреннего (путем отправки действий и чтения избыточного состояния).

Надеюсь, вам понравится, рад услышать о любом предложении

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