标签: e2e-testing

在端到端测试中处理第三方API请求

我想用端到端测试来测试我的Rest API.据我了解,集成测试之间的区别在于我们不进行内存系统配置,而是使用真实的测试数据库和网络请求.

但我无法理解如何处理第三方API请求(如GitHub或Bitbucket API).

创建假冒Github帐户是否正常,我的测试会提取假数据?

如何处理访问令牌,并非所有服务都是公开的,甚至公共服务都可能因速率限制而失败.

testing api rest e2e-testing

15
推荐指数
2
解决办法
568
查看次数

如何在Angular应用程序中使用Puppeteer

我的问题很简单,但我不明白是否可能,在这种情况下它是如何可能的?我想在角度应用程序中使用puppeteer库. https://www.npmjs.com/package/puppeteer这是npm安装.但我不明白我是如何使用它的.例如,我只想制作这个脚本:

const puppeteer = require('puppeteer');
 
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});
 
  await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)

在角度组件中,有人可以帮助我(我能够理解很多东西)

提前谢谢,抱歉我的英语不好,我是法国人

typescript protractor e2e-testing angular puppeteer

14
推荐指数
1
解决办法
7692
查看次数

在 docker 容器上运行 NOT headless chrome

只有当 chrome 无头时,才能在 docker 机器上运行 chrome。不幸的是,无头 chrome 无法忽略阻止我的测试运行的证书错误。

我正在尝试在 docker 容器上运行一个已经在运行的 NodeJS e2e 测试环境。大多数测试都通过了,但是当一个站点需要证书时,它就无法访问。在无头 chrome 上,我可以简单地忽略认证错误。安装在容器上的基础 docker 镜像是 Node:8

{
 browserName: 'chrome',
 chromeOptions: {
   binary: puppeteer.executablePath(),
   args: [
     '--lang=en-US','--headless','--no-sandbox','--ignore-certificate-errors'
   ]
}
Run Code Online (Sandbox Code Playgroud)

预期的结果是要么在 docker 容器上运行带有 gui 的 chrome,要么以某种方式忽略无头 chrome 中的服务器证书错误。

ubuntu node.js docker e2e-testing docker-machine

14
推荐指数
1
解决办法
2万
查看次数

e2e 测试 NestJS 时使用测试数据库

在这个项目中,它使用 NestJS 和 TypeORM。对于真正的API请求,CRUD操作是在MySQL(使用AWS RDS)上进行的。

现在我尝试使用 SQLite(In-Memory) 来测试 API 结果。

我在单元测试中成功实现了这一点,如下代码。

首先,下面是create-memory-db.ts,它返回到内存 SQLite 数据库的连接。

type Entity = Function | string | EntitySchema<any>;

export async function createMemoryDB(entities: Entity[]) {
  return createConnection({
    type: 'sqlite',
    database: ':memory:',
    entities,
    logging: false,
    synchronize: true,
  });
}
Run Code Online (Sandbox Code Playgroud)
  • 通过使用上面导出的函数,我成功运行了单元测试,如下所示。
describe('UserService Logic Test', () => {
  let userService: UserService;
  let connection: Connection;
  let userRepository: Repository<User>;

  beforeAll(async () => {
    connection = await createMemoryDB([User]);
    userRepository = await connection.getRepository(User);
    userService = new UserService(userRepository);
  });

  afterAll(async () => { …
Run Code Online (Sandbox Code Playgroud)

javascript e2e-testing typeorm nestjs

13
推荐指数
1
解决办法
2万
查看次数

有没有办法迭代 Playwright 中的 &lt;li&gt; 列表并单击每个元素?

我正在尝试使用 Playwright 迭代动态元素列表,我已经尝试了一些方法,但没有一个有效:

await this.page.locator('li').click();
const elements = await this.page.locator('ul > li');
await elements.click()
Run Code Online (Sandbox Code Playgroud)
await this.page.$$('ul > li').click();
Run Code Online (Sandbox Code Playgroud)
await this.page.click('ul > li');
Run Code Online (Sandbox Code Playgroud)
const divCounts = await elements.evaluateAll(async (divs) => await divs.click());
Run Code Online (Sandbox Code Playgroud)
this.page.click('ul > li > i.red', { strict: false, clickCount: 1 },)
Run Code Online (Sandbox Code Playgroud)
const elements = await this.page.$$('ul > li > i.red')

elements.forEach(async value => {
  console.log(value)
  await this.page.click('ul > li > i.red', { strict: false, clickCount: 1 },)
  await value.click();
})
Run Code Online (Sandbox Code Playgroud)

automated-tests node.js e2e-testing playwright

13
推荐指数
3
解决办法
3万
查看次数

Cypress 测试在本地是绿色的,但在 CI 中失败 - 调试技巧?

尽管我很喜欢 Cypress,但结果却开始变得很糟糕。我不认为我会做一些根本错误的事情。我已经阅读了几次最佳实践,但我看不出我可以真正改进什么。

它开始变得相当令人沮丧。让测试在本地机器上完美运行(尝试连续运行多次),但是当相同的代码通过 CI(当前是 Bitbucket Pipelines)运行时,一些测试由于奇怪的原因而失败。

例如,单击列表中的一个项目会在购物车中添加一个项目。工作完美,但我试图打破它,但由于某种原因,CI 中的相同测试使点击发生两次。这是我至少能够描述的一个问题。其他人不正常,并且经常随机发生,就像该元素不可见,但查看屏幕截图我可以看到就好了。

我尝试使用cypress-failed-log插件来查看命令日志,但这并没有真正的帮助,因为它与我在本地看到的相同,但在 CI 中却失败了。我在 Cypress Dashboard 中看到的视频也没有那么有用,因为它通常太快了,有些东西甚至在那里看不到。

有人可以就如何更优雅地处理手头的问题向我建议一些其他选择吗?我必须承认我即将放弃这些测试,因为让它们变得可靠需要太多时间。


关于我的设置的一些细节:

cypress-failed-log@2.5.0
cypress-testing-library@3.0.1
cypress@3.3.1

# job definition for running E2E tests in parallel
e2e: &e2e
  name: E2E tests
  image: cypress/browsers:chrome67-ff57
  caches:
    - yarn
    - home-cache
  script:
    - yarn -v
    - cd cypress
    - yarn install --frozen-lockfile
    - npx @bahmutov/print-env BITBUCKET
    - yarn ci --parallel --ci-build-id $BITBUCKET_BUILD_NUMBER
Run Code Online (Sandbox Code Playgroud)

javascript continuous-integration e2e-testing cypress

12
推荐指数
1
解决办法
4249
查看次数

Nightwatch测试:将浏览器设置为固定大小

有没有办法确保浏览器不会从初始窗口大小更改.在测试期间点击了几个导致窗口最大化的东西,但我希望它始终保持相同的大小.

testing selenium nightwatch.js e2e-testing

11
推荐指数
2
解决办法
1万
查看次数

如何在maven中为Java项目组织单元,集成,e2e测试文件夹结构?

我在maven有一个java项目,我知道maven把东西常规使用

  • 的src /主/ JAVA
  • 的src /测试/ JAVA

一切都在测试/通常是单元测试.但是,如果我想引入集成测试和E2E测试呢?我该如何放入正确的文件夹结构?组织这些的正确方法是什么?

可能是这样的:

  • SRC /它/ JAVA
  • SRC/E2E/JAVA
  • 的src /测试/ JAVA

但这样做会假设src/test/java指的是单元测试.我宁愿明确指定

java integration-testing unit-testing maven e2e-testing

11
推荐指数
1
解决办法
6484
查看次数

"无法连接到渲染器":无法使用带有chrome beta的量角器调整大小或最大化浏览器窗口

我正在使用量角器和茉莉花.

我已经确定Chrome驱动程序版本:2.32.498550 (latest)与chrome beta不兼容(Version 62.0.3202.18 (Official Build)).

它在语句之类的时候就会中断

browser.driver.manage().window().maximize()
Run Code Online (Sandbox Code Playgroud)

要么

browser.driver.manage().window().getSize()
Run Code Online (Sandbox Code Playgroud)

浏览器窗口的执行.

谁能帮我这个 ?

jasmine selenium-chromedriver selenium-webdriver protractor e2e-testing

11
推荐指数
2
解决办法
9970
查看次数

如何在多个文件中运行Jest-Puppeteer测试

我正在使用jest-puppeteer来运行我的网络测试.如果我运行我在一个文件中定义的测试,一切都很完美.

describe('user', () => {

    jest.setTimeout(12000);

    beforeEach(async () => {
        await page.setViewport({width: 1200, height: 2000});
        await page.goTo('http://localhost:3000');
    });

    it('test 1', async () => {
        //my test steps
    });

    it('test 2', async () => {
        //my test steps
    });

});
Run Code Online (Sandbox Code Playgroud)

但是,如果我在自己的文件中运行每个测试,我会收到错误.

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'addExpectationResult' of undefined
Run Code Online (Sandbox Code Playgroud)

文件1

describe('user', () => {

    jest.setTimeout(12000);

    beforeEach(async () => {
        await page.setViewport({width: 1200, height: 2000});
        await page.goTo('http://localhost:3000');
    });

    it('test 1', async () => {
        //my test steps
    });

});
Run Code Online (Sandbox Code Playgroud)

文件2

describe('user', () …
Run Code Online (Sandbox Code Playgroud)

web-testing webtest jestjs e2e-testing puppeteer

11
推荐指数
1
解决办法
869
查看次数