剧作家 waitForResponse 如何等到响应有文本 "completed"

Playwright waitForResponse how to wait till the response has text "completed"

我有一个场景,其中 API 收到多个响应(一次一个)并在 UI 上呈现。 API 继续轮询数据库,直到完成接收所有响应。 我需要我的脚本等待 API 响应变为“完成”。我试过下面的代码,但它不会等到状态完成。

const response = await page.waitForResponse(response => response.url().includes('https://services/url') && response.status() === 200);

console.log('RESPONSE ' + (await response.body()));

下面是记录的响应

{
  "transactionDetail": {
    "transactionID":"866f357f-7541-4ff2-b879-61ca284513a7",
    "transactionTimestamp":"2021-08-02T10:48:50.372207",
    "inLanguage":"en-US",
    "serviceVersion":"1"
  },
  "resultSummary":{
    "inputCount":1,
    "successCount":1,
    "failureCount":0},
    "inquiryDetail": {
      "kaseIterationId":"8a7b11547af8835d017b067ad06e04ba"
    },
  },
  "response":"InProgress"
}

如何让我的脚本等到“响应”变为“已完成”而不是“进行中”。

您可以通过向 page.waitForResponse 提供一个异步谓词来做到这一点,如下所示:

async function isFinished(response) {
    return response.url().includes('https://services/url') && response.status() === 200 && (await response.json()).response === 'Completed'
}

const response = await page.waitForResponse(async (response) => await isFinished(response));