代码之家  ›  专栏  ›  技术社区  ›  surfmuggle

Playwright-API测试-连接超时错误-公司代理背后的可能原因

  •  0
  • surfmuggle  · 技术社区  · 1 年前

    我试着使用 this api tutorial 从我们的代理后面调用Web服务。

    但我明白

    Error: apiRequestContext.get: Connection timeout
    Call log:
      - → GET https://reqres.in/api/users/2
      -   user-agent: Playwright/1.40.1 (x64; windows 10.0) node/18.7
      -   accept: */*
      -   accept-encoding: gzip,deflate,br
    

    如果我打开 reqres.in/api/users/2 在浏览器中,它按预期工作。如果我跑步 npm run tests:chrome 演示测试 example.spec.ts 打开的 playwright.dev 同样有效。

    我的测试 api.spec.ts 有这些线路

    import {test, expect} from '@playwright/test'
    import { assert } from 'console'
    import exp from 'constants'
    
    test.describe.parallel("Api testing", () => {
        const baseURL = "https://reqres.in/api"
        test("Simple API 1", async ({request}) => {
            const response = await request.get( "https://reqres.in/api/users/2")
            // const response = await request.get( `${baseURL}/users/2`)
            expect(response.status()).toBe(200)
        })
    })
    

    还有我的 api.config.ts 有这些线路

    import { PlaywrightTestConfig } from '@playwright/test';
    import exp from 'constants';
    import { userInfo } from 'os';
    
    const config: PlaywrightTestConfig = {
        timeout: 60000,
        retries: 0,
        testDir: 'tests/api',
        use: {
            headless: false, viewport: {width: 1280, height: 720},
            actionTimeout: 10000, ignoreHTTPSErrors: true, video: 'off', screenshot: 'off'
        },
        projects: [ { name: 'Chromium', use: { browserName: 'chromium'}, } ]
    }
    
    export default config
    

    还有我的 package.json 有这些线路

    {
      "name": "api-24-01", "version": "1.0.0",
      "description": "Automated Software testing with Playwright",
      "main": "index.js",
      "scripts": {
        "tests:chrome" : "playwright test --config=playwright.config.ts --project=Chromium",
        "tests:api" : "playwright test --config=api.config.ts --project=Chromium"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@playwright/test": "^1.40.1",
        "@types/node": "^20.10.8"
      }
    }
    

    电流 guide on api testing 没有解释是否必须在需要身份验证的公司代理后面执行任何其他操作或配置。

    问题

    我必须做什么/配置才能在需要身份验证的公司代理后面使用Playwright API测试?

    0 回复  |  直到 1 年前
        1
  •  0
  •   surfmuggle    1 年前

    剧作家团队为添加了一个部分 如何使用代理进行api测试 API testing guide .

    使用 具有 配置文件 playwright.config.ts 必须为您的 proxy : {} 就像这个例子中一样

    import { PlaywrightTestConfig } from '@playwright/test';
    import exp from 'constants';
    import { userInfo } from 'os';
    
    const config: PlaywrightTestConfig = {
        timeout: 60000,
        retries: 0,
        testDir: 'tests/api',
        use: {
            headless: true,
            viewport: {width: 1280, height: 720},
            actionTimeout: 10000,
            ignoreHTTPSErrors: true,
            video: 'off',
            screenshot: 'off',
            proxy: {
                server: 'http://<your-proxy-server>:<port>',
                username: '<your-user>',
                password: '<your-pass>'
            },
        },
        projects: [
            {
                name: 'Chromium',
                use: { browserName: 'chromium'},
            }
        ]
    }
    
    export default config
    

    这解决了连接超时问题。

    推荐文章