cy.type( text )
принимает строку.Вы передаете ей команду cy, которая не является синхронной.
Вы можете сделать что-нибудь сумасшедшее, как это (не проверено):
beforeEach(function () {
cy.wrap({username:"richard@cypresstest.com"}).as('userLoginWrap');
})
it.only('should log user in successfully', function () {
let username;
cy.get('@userLoginWrap').its('username').should('eq', 'richard@cypresstest.com')
.then( obj => username = obj.username );
cy.get('#usernameField')
.type( username );
})
Но я бы предпочел сохранить "richard@cypresstest.com"
до константы --- таким образом, вам не придется повторять это, как вы делаете сейчас, плюс избегайте махинаций с сохранением переменных с помощью команд .then()
.
В качестве альтернативы используйте светильники .