我正在尝试为用户创建一个从Auth0获取登录令牌的函数,因此我不必在每个测试场景之前使用登录测试(无论如何都不能正常工作),而是我想要拥有一个存储的令牌并使用它来验证用户,以便我可以测试该应用程序。 我不是开发人员(甚至是Test的开发人员)。我是一名QA,他正在努力学习足够的Javascript,以便使用赛普拉斯为我们的新内部风险评估应用程序创建测试场景。 我们有一个新应用程序的用户列表,这些用户都将通过Auth0进行验证。所有用户都是我们公司的内部用户,并且基于我们与Microsoft帐户相关联的电子邮件。
以下是我的登录测试,按下登录按钮,然后重定向到Auth0,然后输入我的电子邮件地址以验证登录。这是成功的,除了它实际上没有加载应用程序。
```
describe('My Login Test', function (){
it('Visit Risk App Landing Page', function (){
const typedText = 'adam.allford@landmark.co.uk'
cy.visit('https://bvt-riskassessment.lmkcloud.net')
cy.get('button').click()
cy.get('input.auth0-lock-input').first()
.type(typedText)
.should('have.value', typedText)
cy.get('button').click()
cy.url().should('eq','http://bvt-riskassessment.lmkcloud.net/workflow')
})
})
```
我在Gitter论坛上收到了一个有类似问题的人的回复,并使用下面显示的(或类似的)尝试登录。我用相关的详细信息对其进行了编辑,并将其放在command.js中,并在显示的loacation中使用loginuser.json(包含用户名和密码),然后在测试场景中包含beforeEach。
```
Cypress.Commands.add('login', (userType, options = {}) =>
{cy.readFile(`cypress/fixtures/loginUser.json`).then((json) => {
const { email, password } = json
const dataToSend = {
email,
password,
}
cy.request({
url: `https://lmcorp.eu.auth0.com/userinfo`,
method: 'POST',
body: dataToSend,
form: true
}).then((response) => {
const { status, body } = response
expect(status).to.eq(200)
expect(body).to.have.property('success', 1)
cy.visit(url)
})
})
//and use it like :
beforeEach(() => { login('url') })
```
...然后在测试场景中包含了beforeEach。
```
describe('My First Test', function (){
it('Visit Risk App Landing Page', function (){
beforeEach(() => { login('https://lmcorp.eu.auth0.com/')})
cy.visit('http://localhost:3000/workflow')
cy.contains('Site Solutions Combined Assessments')
cy.contains('To Do')
cy.contains('Assessing')
cy.contains('Reviewing')
cy.contains('Done')
cy.get('button').click()
cy.contains('Assessments')
cy.contains('Site Solutions Combined')
cy.contains('Flood')
cy.contains('Whatever Next')
})
})
```
但是我在命令控制台上收到以下消息。
![ALT] https://i.imgur.com/cJljZzm.png
我完全陷入困境,不知道从哪里开始。我的问题是:我想创建一个功能,它将调用我们的Auth0 url并获得一个登录验证令牌,该令牌可用于允许访问每个测试场景的应用程序。我是否可以更改此处的内容以使其成功,或者是否有人就如何创建新功能以获取Auth0令牌有任何建议?