Проблема с Cypress для приятной игры с компонентами StencilJS - PullRequest
1 голос
/ 07 марта 2019

Я испытываю некоторые сбои в тестах Cypress для моего приложения Angular: они отлично работают при нацеливании на мой локальный ящик, но при установке CYPRESS_BASE_URL на удаленную машину, на которой выполняется тот же код, некоторые из тестов не пройдены.

Я думаю, что сузил это до взаимодействия компонентов StencilJS. Подумайте: у меня есть одна форма, которая запрашивает имя пользователя, пароль и т. Д., Используя обычные элементы <input>, а именно:

<input formControlName="username" type="text">

... и так далее. Тесты надежно работают с ними, то есть эти операторы правильно заполняют поля:

cy.get('[formControlName=fullname]').type(name)
cy.get('[formControlName=username]').type(username)
cy.get('[formControlName=password]').type(passwrod)

У меня есть другая форма, в которой используется компонент StencilJS со встроенным <input>, поэтому элементы выглядят так:

<my-input ngDefaultControl formControlName="newPassword" type="password"></my-input>
<my-input ngDefaultControl formControlName="confirmPassword" type="password"></my-input>

Мой код пытается заполнить два поля:

cy.get('[formControlName=newPassword]').find('input').type(updated_password).blur()
cy.get('[formControlName=confirmPassword]').find('input').type(updated_password).blur()

Но здесь тест не пройден: на самом деле он заполняет первый пароль, переходит ко второму полю и заполняет второе, но тогда первое поле загадочным образом становится пустым!

Компонент Stencil представляет собой простую оболочку вокруг <input>:

return (
  <input type={ this.type }
    value={ this.value }
    placeholder={ this.placeholder }
    onChange={ this.handleChange.bind(this) }></input>
);

Я пробовал с и без .blur(). Я пробовал с и без цепочки с .then(). Но приведенный выше тест всегда завершается неудачно с удаленной целью и всегда успешно с локальной целевой машиной. Любые другие предложения о том, как сделать эту работу надежно?

...