使用 Playwright 进行 API GET 请求测试

kar*_*tic 5 javascript testing typescript visual-studio-code playwright

我一直在尝试使用以下代码验证 GET 状态。不幸的是,我收到错误“apiRequestContext.get: connect ECONNREFUSED ::1:8080”。任何见解将不胜感激。

代码:

import { expect, test } from '@playwright/test';

test('Get health status', async ({ request }) => {
    const response = await request.get('http://localhost:8080/myapp/actuator/health')
    expect(response.status()).toBe(200)
  })
Run Code Online (Sandbox Code Playgroud)

错误: apiRequestContext.get:连接 ECONNREFUSED ::1:8080

Syn*_*nox 0

从 NodeJS 17 开始,节点将更喜欢IPv6 而不是 IPv4

确认

服务可能仅侦听 IPv4,但客户端使用 IPv6。检查以下单词中的IPv4“或” IPv6

  • netstat -tulpen(在 Linux 上)或
  • sudo lsof -iTCP -sTCP:LISTEN -n -P 8080 | grep -i --color 8080(在 macOS 上)。

解决方案

有两种选择:

  1. 为服务启用 IPv6 绑定。这取决于你的服务框架——how to enable ipv6 for service XYZ在Google中搜索。

  2. 将 NodeJS 配置为首选 IPv4 而不是 IPV6。添加playwright.config.js

import dns from "dns";
dns.setDefaultResultOrder("ipv4first");
Run Code Online (Sandbox Code Playgroud)
  1. 如果服务可以处理,则强制使用 IPv4:连接到http://127.0.0.1:8080而不是http://localhost:8080

  2. 禁用整台机器的 localhost 的 IPv6 地址。编辑主机文件 ( sudo vi /etc/hosts) 并删除::1 localhost.

资源