Javascript 如何使用剧作家等待请求并验证响应?

Javascript 如何使用剧作家等待请求并验证响应?,javascript,automated-tests,playwright,Javascript,Automated Tests,Playwright,这是我第一次使用剧作家,我不知道如何等待请求和验证响应。 我已经使用cypress很长时间了,管理网络请求非常容易。 例如,我需要在单击按钮后验证响应,这就是我使用cypress的方法: cy.server() cy.route('POST', '/api/contacts').as('newContact') cy.get('.btn').click() cy.wait('@newContact').then((respons

这是我第一次使用剧作家,我不知道如何等待请求和验证响应。 我已经使用cypress很长时间了,管理网络请求非常容易。 例如,我需要在单击按钮后验证响应,这就是我使用cypress的方法:

        cy.server()
        cy.route('POST', '/api/contacts').as('newContact')

        cy.get('.btn').click()

        cy.wait('@newContact').then((response) => {
            expect(response.status).to.eq(400)
            expect(response.responseBody.data.name).to.eq('abcde')
        })
这就是我试图对剧作家做同样事情的方式,但它验证了早在点击保存按钮之前就发送的
GET
请求。我不知道如何正确管理此请求,这是我的测试套件的一个障碍:

        await contacts.clickSaveBtn()

        await page.waitForResponse((resp) => {
            resp.url().includes('/api/contacts')
            expect(resp.status()).toBe(400)
        })

非常感谢您提供的任何帮助或建议

您需要做的是首先开始等待响应,然后单击,这样
waitForResponse()
就可以捕捉到由于单击而产生的实际响应

等待承诺([
page.waitForResponse(resp=>resp.url()。包括('/api/contacts')&&resp.status()==400),
联系人。单击SaveBTN()
]);

这应该可以处理可能的竞争条件。

您需要做的是首先开始等待响应,然后单击,这样
waitForResponse()
就可以捕捉到由于单击而产生的实际响应

等待承诺([
page.waitForResponse(resp=>resp.url()。包括('/api/contacts')&&resp.status()==400),
联系人。单击SaveBTN()
]);

这应该可以处理可能的比赛情况。

它确实有效,谢谢!真的很管用谢谢!