Skip to content

Commit 593b003

Browse files
authored
Merge pull request #245 from optimizely/EC3-1545-gha-migration
EC3-1545 migrate from travis.yml to GHA
2 parents 102fe39 + 6d07168 commit 593b003

11 files changed

+91
-131
lines changed

.github/workflows/run-tests.yml

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# .github/workflows/nodejs-ci.yml
2+
name: Run Tests for Nuclear JS
3+
4+
on:
5+
push:
6+
branches:
7+
- master
8+
pull_request:
9+
branches:
10+
- master
11+
12+
jobs:
13+
build-and-test:
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
# Checkout the code
18+
- name: Checkout code
19+
uses: actions/checkout@v4
20+
21+
# Set up Node.js
22+
- name: Set up Node.js
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: 20.18.1
26+
27+
# Install grunt-cli globally
28+
- name: Install grunt-cli
29+
run: npm install -g grunt-cli
30+
31+
# Install dependencies
32+
- name: Install dependencies
33+
run: npm install
34+
35+
# Run tests
36+
- name: Run tests
37+
run: grunt ci

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
node_modules/
22
coverage/
3+
package-lock.json

Gruntfile.js

+20-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
1-
module.exports = function(grunt) {
2-
require('load-grunt-config')(grunt)
3-
// load npm tasks
4-
grunt.loadNpmTasks('grunt-karma')
5-
grunt.loadNpmTasks('grunt-karma-coveralls')
6-
}
1+
module.exports = function (grunt) {
2+
// Load grunt configurations
3+
require('load-grunt-config')(grunt, {
4+
configPath: require('path').join(__dirname, 'grunt'),
5+
init: true,
6+
});
7+
8+
// Load npm tasks
9+
grunt.loadNpmTasks('grunt-karma');
10+
grunt.loadNpmTasks('grunt-karma-coveralls');
11+
12+
// Default task for Chrome and Firefox
13+
grunt.registerTask('test', ['karma:chrome', 'karma:firefox']);
14+
15+
// Separate task for Chrome only
16+
grunt.registerTask('test:chrome', ['karma:chrome']);
17+
18+
// Separate task for Firefox only
19+
grunt.registerTask('test:firefox', ['karma:firefox']);
20+
};

README.md

-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
[![Coverage Status](https://coveralls.io/repos/optimizely/nuclear-js/badge.svg?branch=master)](https://coveralls.io/r/optimizely/nuclear-js?branch=master)
55
[![Join the chat at https://gitter.im/optimizely/nuclear-js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/optimizely/nuclear-js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
66

7-
[![Sauce Test Status](https://saucelabs.com/browser-matrix/nuclearjs.svg)](https://saucelabs.com/u/nuclearjs)
8-
97
Traditional Flux architecture built with ImmutableJS data structures.
108

119
## Documentation

.travis.yml deprecatedtravis.yml

File renamed without changes.

grunt/aliases.js

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
module.exports = {
22
'test': [
3-
'karma:phantom',
3+
'karma:chrome',
4+
'karma:firefox',
45
],
56

6-
'sauce': [
7-
'karma:sauce_modern',
8-
'karma:sauce_ie',
9-
'karma:sauce_mobile',
10-
],
117

128
'ci': [
139
'eslint',
1410
'clean:coverage',
1511
'karma:coverage',
16-
'coveralls',
17-
//'sauce', TODO: investigate why sauce connect isnt working
12+
// 'coveralls', //doesn't seem to be a thing anymore.
1813
],
1914
}

grunt/karma.js

+25-24
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
var sauce = require('./sauce')
21
var path = require('path')
32

43
module.exports = {
54
options: {
65
// base path that will be used to resolve all patterns (eg. files, exclude)
76
basePath: path.join(__dirname, '../'),
87
// frameworks to use
9-
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
108
frameworks: ['jasmine'],
119

1210
// list of files / patterns to load in the browser
@@ -43,22 +41,37 @@ module.exports = {
4341
},
4442
},
4543

46-
phantom: {
47-
frameworks: ['jasmine', 'es5-shim'],
48-
browsers: ['PhantomJS'],
44+
chrome: {
45+
frameworks: ['jasmine'],
46+
reporters: ['progress', 'html'],
47+
browsers: ['ChromeHeadless'], // Use ChromeHeadless for CI
48+
customLaunchers: {
49+
HeadlessChrome: {
50+
base: 'ChromeHeadless',
51+
flags: ['--no-sandbox', '--disable-gpu'], // Required for CI environments
52+
},
53+
},
54+
autoWatch: false,
55+
singleRun: true,
4956
},
5057

51-
chrome: {
52-
reporters: ['html'],
53-
browsers: ['Chrome'],
54-
autoWatch: true,
55-
singleRun: false,
58+
firefox: {
59+
frameworks: ['jasmine'],
60+
reporters: ['progress', 'html'],
61+
browsers: ['FirefoxHeadless'], // Use FirefoxHeadless for CI
62+
customLaunchers: {
63+
HeadlessFirefox: {
64+
base: 'FirefoxHeadless',
65+
},
66+
},
67+
autoWatch: false,
68+
singleRun: true,
5669
},
5770

5871
coverage: {
59-
frameworks: ['jasmine', 'es5-shim'],
72+
frameworks: ['jasmine'],
6073
reporters: ['progress', 'coverage'],
61-
browsers: ['PhantomJS'],
74+
browsers: ['ChromeHeadless', 'FirefoxHeadless'], // Run tests on both browsers for coverage
6275
coverageReporter: {
6376
reporters: [
6477
{ type: 'html', dir: 'coverage/' },
@@ -82,16 +95,4 @@ module.exports = {
8295
},
8396
},
8497
},
85-
86-
sauce_modern: {
87-
options: sauce.modern,
88-
},
89-
90-
sauce_ie: {
91-
options: sauce.ie,
92-
},
93-
94-
sauce_mobile: {
95-
options: sauce.mobile,
96-
},
9798
}

grunt/sauce.js

-85
This file was deleted.

package.json

+3-4
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,17 @@
4545
"jstransform": "^11.0.1",
4646
"jstransform-loader": "^0.2.0",
4747
"karma": "^0.13.3",
48-
"karma-chrome-launcher": "^0.2.0",
48+
"karma-chrome-launcher": "^0.2.3",
4949
"karma-coverage": "^0.4.2",
5050
"karma-es5-shim": "https://github.com/pokehanai/karma-es5-shim/archive/v2.1.0.tar.gz",
51+
"karma-firefox-launcher": "^2.1.3",
5152
"karma-jasmine": "^0.3.6",
5253
"karma-jasmine-html-reporter": "^0.1.8",
53-
"karma-phantomjs-launcher": "^0.2.0",
54-
"karma-sauce-launcher": "^0.2.14",
5554
"karma-webpack": "^1.7.0",
5655
"load-grunt-config": "^0.17.1",
5756
"lodash": "^4.17.11",
5857
"node-libs-browser": "^0.5.2",
59-
"phantomjs": "^1.9.17",
58+
"puppeteer": "^24.1.0",
6059
"react": "^0.13.3",
6160
"webpack": "^1.10.5"
6261
}

src/reactor.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { ConsoleGroupLogger } from './logging'
66
import { isKeyPath } from './key-path'
77
import { isGetter } from './getter'
88
import { toJS } from './immutable-helpers'
9-
import { extend, toFactory } from './utils'
9+
import { toFactory } from './utils'
1010
import {
1111
ReactorState,
1212
ObserverState,

tests/reactor-tests.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Reactor, Store } from '../src/main'
33
import { getOption } from '../src/reactor/fns'
44
import { toImmutable } from '../src/immutable-helpers'
55
import { PROD_OPTIONS, DEBUG_OPTIONS } from '../src/reactor/records'
6-
import { NoopLogger, ConsoleGroupLogger } from '../src/logging'
6+
import { ConsoleGroupLogger } from '../src/logging'
77

88
describe('Reactor', () => {
99
it('should construct without \'new\'', () => {

0 commit comments

Comments
 (0)