Skip to content

Commit

Permalink
Merge pull request #796 from Stuk/ghci
Browse files Browse the repository at this point in the history
Add Github Actions PR workflow and test with Playwright
  • Loading branch information
Stuk authored Oct 11, 2021
2 parents 3f2f0da + 40cc7f4 commit 85c4989
Show file tree
Hide file tree
Showing 6 changed files with 1,163 additions and 1,741 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: pull-request

on:
pull_request:
branches: [ master ]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: actions/setup-node@v2
with:
node-version: 'lts/*'
cache: 'npm'

- name: Cache Node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: "Install dependencies"
run: |
npm install
sudo npx playwright install-deps
- name: Lint
run: npm run lint
- name: Test Node
run: npm run test-node
- name: Test browsers
run: |
npm run test-browser
59 changes: 0 additions & 59 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,53 +2,9 @@
"use strict";

module.exports = function(grunt) {
// https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
// A lot of the browsers seem to time out with Saucelab's unit testing
// framework. Here are the browsers that work and get enough coverage for our
// needs.
var browsers = [
{browserName: "chrome"},
{browserName: "firefox", platform: "Linux"},
{browserName: "internet explorer"}
];

var tags = [];
if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST != "false") {
tags.push("pr" + process.env.TRAVIS_PULL_REQUEST);
} else if (process.env.TRAVIS_BRANCH) {
tags.push(process.env.TRAVIS_BRANCH);
}

var version = require("./package.json").version;

grunt.initConfig({
connect: {
server: {
options: {
base: "",
port: 8080
}
}
},
'saucelabs-qunit': {
all: {
options: {
urls: ["http://127.0.0.1:8080/test/index.html?hidepassed"],
build: process.env.TRAVIS_JOB_ID,
throttled: 4,
"max-duration": 1200, // seconds, IE6 is slow
browsers: browsers,
testname: "qunit tests",
tags: tags,
// Tests have statusCheckAttempts * pollInterval seconds to complete
pollInterval: 2000,
statusCheckAttempts: 240,
"max-duration": 1200,
browsers: browsers,
maxRetries: 2
}
}
},
jshint: {
// see https://github.com/gruntjs/grunt-contrib-jshint/issues/198
// we can't override the options using the jshintrc path
Expand Down Expand Up @@ -102,25 +58,10 @@ module.exports = function(grunt) {
}
});

grunt.loadNpmTasks("grunt-contrib-connect");
grunt.loadNpmTasks("grunt-saucelabs");
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');

// A task to cause Grunt to sit and wait, keeping the test server running
grunt.registerTask("wait", function() {
this.async();
});

grunt.registerTask("test-local", ["build", "connect", "wait"]);
grunt.registerTask("test-remote", ["build", "connect", "saucelabs-qunit"]);

if (process.env.SAUCE_USERNAME && process.env.SAUCE_ACCESS_KEY) {
grunt.registerTask("test", ["jshint", "test-remote"]);
} else {
grunt.registerTask("test", ["jshint", "test-local"]);
}
grunt.registerTask("build", ["browserify", "uglify"]);
grunt.registerTask("default", ["jshint", "build"]);
};
Loading

0 comments on commit 85c4989

Please sign in to comment.