github: add CI for pull requests

and hacks to get tests working
This commit is contained in:
David Lechner
2020-05-20 14:52:45 -05:00
committed by David Lechner
parent cde8d6b764
commit 90817a1ae7
6 changed files with 63 additions and 10 deletions
+3
View File
@@ -27,4 +27,7 @@ module.exports = {
settings: {
react: { version: 'detect' },
},
ignorePatterns: [
"test-env.js"
],
};
+35
View File
@@ -0,0 +1,35 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: CI Tests
on:
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v1
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Run yarn install
run: |
echo "//npm.pkg.github.com/:_authToken=$TOKEN" >> .npmrc
yarn install
env:
TOKEN: ${{ secrets.privateToken }}
- run: yarn test
- run: yarn build
if: ${{ success() }}
+1 -1
View File
@@ -42,7 +42,7 @@
"prepare": "mkdir -p public/static/js && cp node_modules/@pybricks/mpy-cross-4/build-wasm/mpy-cross.wasm public/static/js/",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"test": "react-scripts test --env=./test-env.js",
"eject": "react-scripts eject",
"lint": "tsc --noEmit && eslint '*/**/*.{js,ts,tsx}' --quiet --fix"
},
-9
View File
@@ -1,9 +0,0 @@
import { render } from '@testing-library/react';
import React from 'react';
import App from './App';
test('renders learn react link', () => {
const { getByText } = render(<App />);
const linkElement = getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
});
+9
View File
@@ -0,0 +1,9 @@
import { fmod } from './math';
test('fmod of positive numbers', () => {
expect(fmod(3, 4)).toBe(3 % 4);
});
test('fmod of negative and positive number', () => {
expect(fmod(-3, 4)).toBe(1);
});
+15
View File
@@ -0,0 +1,15 @@
const Environment = require('jest-environment-jsdom');
/**
* A custom environment to set the TextEncoder
* Thanks https://stackoverflow.com/a/57713960/1976323
*/
module.exports = class CustomTestEnvironment extends Environment {
async setup() {
await super.setup();
if (typeof TextEncoder === 'undefined') {
const { TextEncoder } = require('util');
this.global.TextEncoder = TextEncoder;
}
}
};