Проблема не во всех цепочках команд: автоматический c механизм повторных попыток , как и следовало ожидать.
Так что cy.get('header > p').invoke('text')
повторяет первую часть (ищет элемент), но как только элемент присутствует, он захватывает любой текст, который у него есть в то время.
Команда cy.contains()
лучше повторить, пока не будет присутствовать и элемент, и нужное содержимое.
Поскольку это может занять до 120 секунд, необходимо увеличить время ожидания повторной попытки.
Ref cy.contains () , 4-й шаблон .contains(selector, content, options)
.
Некоторые Идеи
Если вы знаете, какой идентификатор пользователя будет отправлен значение для тестирования.
cy.contains('header > p', 'expectedUserId', { timeout: 120000 })
.invoke('text')
.then(text => cy.log("User Id: " + text) )
Если вам известна только общая форма идентификатора пользователя, который будет отправлен
Используйте регулярное выражение если вы не знаете точный идентификатор пользователя, но знаете его форму (например, всегда число).
cy.contains('header > p', /\d+/, { timeout: 120000 })
.invoke('text')
.then(text => cy.log("User Id: " + text) )
Если вы знаете элемент будет пустым до получения идентификатора пользователя
Используйте регулярное выражение для непустого содержимого.
cy.contains('header > p', /.+/, { timeout: 120000 })
.invoke('text')
.then(text => cy.log("User Id: " + text) )