Я испытываю некоторые сбои в тестах 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()
.
Но приведенный выше тест всегда завершается неудачно с удаленной целью и всегда успешно с локальной целевой машиной.
Любые другие предложения о том, как сделать эту работу надежно?