【问题标题】:Puppeteer Travis-CI chrome-headless not workingPuppeteer Travis-CI chrome-headless 不工作
【发布时间】:2018-06-04 14:26:03
【问题描述】:

我正在尝试为我的学生自动化测试。作为一个非常基本的示例:编写一些 HTML。所以我创建了一个测试用例来检查无序列表。 无论如何:它在本地工作,但似乎我无法让它在 travis 上工作。我可能会漏掉一件小事,但不知道出了什么问题:

https://travis-ci.com/maciossek/hft-asgmt-html-01/jobs/127338669/config https://github.com/maciossek/hft-asgmt-html-01

非常感谢任何帮助!

【问题讨论】:

    标签: travis-ci puppeteer google-chrome-headless


    【解决方案1】:

    这是我最终得到的 travis.yml(工作)

    language: node_js
    node_js:
      - "9"
    dist: trusty
    sudo: false  
    addons:
      chrome: stable
    before_install:
      - google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
    cache:
      yarn: true
      directories:
        - node_modules
    install:
      - yarn install
    script:
      - yarn test
    

    【讨论】:

    • 你用的是哪个版本的Pupeteer?
    • 我一直在用:^1.4.0
    【解决方案2】:

    Travis CI 更新了支持 sudo 的 Ubuntu 构建环境 (dist: trusty),因此不再需要安装 google-chrome-stable

    这是一个完整的运行示例:

    .travis.yml

    dist: trusty
    sudo: required
    
    language: node_js
    node_js:
    - "8.11.3"
    
    script:
     - yarn test
    

    package.json

    {
      "dependencies": {
        "express": "4.16.3"
      },
      "devDependencies": {
        "jasmine": "3.2.0",
        "puppeteer": "1.9.0"
      },
      "main": "src/Server.js",
      "name": "example-puppeteer-travis-ci",
      "scripts": {
        "test": "jasmine"
      },
      "version": "1.0.0"
    }
    

    src/Server.js

    const express = require('express');
    
    class Server {
      constructor() {
        this.app = express();
        this.app.get('/', (request, response) => response.send('<title>Hello</title>'));
      }
    
      start(port = 8080) {
        return new Promise((resolve, reject) => {
          if (this.server) {
            reject(new Error('Server is already running.'));
          } else {
            this.server = this.app.listen(port, () => resolve(port));
          }
        });
      }
    
      stop() {
        if (this.server) {
          this.server.close();
          this.server = undefined;
        }
      }
    }
    
    module.exports = Server;
    

    spec/support/ServerSpec.js

    const puppeteer = require('puppeteer');
    const Server = require('../../src/Server');
    
    describe('Server', () => {
      let browser = undefined;
      let server = undefined;
    
      beforeEach(async () => {
        browser = await puppeteer.launch({args: ['--disable-setuid-sandbox', '--no-sandbox'], dumpio: true});
        server = new Server();
      });
    
      afterEach(async () => {
        if (browser) await browser.close();
        if (server) await server.stop();
      });
    
      it('serves a homepage with a title', async () => {
        const port = await server.start();
        const url = `http://localhost:${port}/`;
    
        const page = await browser.newPage();
        await page.goto(url);
    
        const title = await page.title();
        expect(title).toBe('Hello');
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2018-07-24
      • 2019-09-04
      • 1970-01-01
      相关资源
      最近更新 更多