Skip to content

Commit ab498c4

Browse files
committed
Offload browser test transforms to karma runner
1 parent 2f12378 commit ab498c4

File tree

6 files changed

+127
-122
lines changed

6 files changed

+127
-122
lines changed

gulpfile.babel.js

Lines changed: 17 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,16 @@ var log = require('fancy-log')
4848
const enableActiveNodeHandlesLogging = false
4949

5050
/** Build all-in-one files for use in the browser */
51-
gulp.task('build-browser', async function () {
51+
gulp.task('browser', async function () {
5252
const browserOutput = 'lib/browser'
5353
// Our app bundler
5454
const appBundler = browserify({
5555
entries: ['src/index.js'],
5656
cache: {},
5757
standalone: 'neo4j',
58-
packageCache: {}
59-
})
60-
.transform(babelifyTransform())
61-
.transform(browserifyTransformNodeToBrowserRequire())
62-
.bundle()
58+
packageCache: {},
59+
transform: ['babelify', './support/inject-browser-transform']
60+
}).bundle()
6361

6462
// Un-minified browser package
6563
await appBundler
@@ -75,65 +73,21 @@ gulp.task('build-browser', async function () {
7573
.pipe(gulp.dest(browserOutput))
7674
})
7775

78-
gulp.task('build-browser-test', async function () {
79-
const browserOutput = 'build/browser/'
80-
const testFiles = []
81-
82-
return gulp
83-
.src(['./test/**/!(examples).test.js', '!./test/**/node/*.js'])
84-
.pipe(
85-
through.obj(
86-
function (file, enc, cb) {
87-
testFiles.push(file.path)
88-
cb()
89-
},
90-
function (cb) {
91-
// At end-of-stream, push the list of files to the next step
92-
this.push(testFiles)
93-
cb()
94-
}
95-
)
96-
)
97-
.pipe(
98-
through.obj(function (testFiles, enc, cb) {
99-
browserify({
100-
entries: testFiles,
101-
cache: {},
102-
debug: true
103-
})
104-
.transform(babelifyTransform())
105-
.transform(browserifyTransformNodeToBrowserRequire())
106-
.bundle()
107-
.on('error', log.error)
108-
.pipe(source('neo4j-web.test.js'))
109-
.pipe(gulp.dest(browserOutput))
110-
.on('end', cb)
111-
})
112-
)
113-
})
114-
115-
var buildNode = function (options) {
116-
return gulp
117-
.src(options.src)
118-
.pipe(babel(babelConfig()))
119-
.pipe(gulp.dest(options.dest))
120-
}
121-
12276
gulp.task('nodejs', function () {
123-
return buildNode({
124-
src: 'src/**/*.js',
125-
dest: 'lib'
126-
})
77+
return gulp
78+
.src('src/**/*.js')
79+
.pipe(babel())
80+
.pipe(gulp.dest('lib'))
12781
})
12882

12983
// prepares directory for package.test.js
13084
gulp.task(
13185
'install-driver-into-sandbox',
13286
gulp.series('nodejs', function () {
133-
var testDir = path.join('build', 'sandbox')
87+
const testDir = path.join('build', 'sandbox')
13488
fs.emptyDirSync(testDir)
13589

136-
var packageJsonContent = JSON.stringify({
90+
const packageJsonContent = JSON.stringify({
13791
private: true,
13892
dependencies: {
13993
'neo4j-driver': __dirname
@@ -169,14 +123,6 @@ gulp.task('run-browser-test-firefox', function (cb) {
169123
runKarma('firefox', cb)
170124
})
171125

172-
gulp.task('run-browser-test-edge', function (cb) {
173-
runKarma('edge', cb)
174-
})
175-
176-
gulp.task('run-browser-test-ie', function (cb) {
177-
runKarma('ie', cb)
178-
})
179-
180126
gulp.task('run-browser-test', gulp.series('run-browser-test-firefox'))
181127

182128
gulp.task('watch', function () {
@@ -198,21 +144,21 @@ gulp.task(
198144
/** Set the project version, controls package.json and version.js */
199145
gulp.task('set', function () {
200146
// Get the --version arg from command line
201-
var version = minimist(process.argv.slice(2), { string: 'version' }).version
147+
const version = minimist(process.argv.slice(2), { string: 'version' }).version
202148

203149
if (!semver.valid(version)) {
204150
throw new Error(`Invalid version "${version}"`)
205151
}
206152

207153
// Change the version in relevant files
208-
var versionFile = path.join('src', 'version.js')
154+
const versionFile = path.join('src', 'version.js')
209155
return gulp
210156
.src([versionFile], { base: './' })
211157
.pipe(replace('0.0.0-dev', version))
212158
.pipe(gulp.dest('./'))
213159
})
214160

215-
var neo4jHome = path.resolve('./build/neo4j')
161+
const neo4jHome = path.resolve('./build/neo4j')
216162

217163
gulp.task('start-neo4j', function (done) {
218164
sharedNeo4j.start(neo4jHome, process.env.NEOCTRL_ARGS)
@@ -236,9 +182,7 @@ gulp.task('run-stress-tests', function () {
236182
.on('end', logActiveNodeHandles)
237183
})
238184

239-
gulp.task('run-ts-declaration-tests', function () {
240-
var failed = false
241-
185+
gulp.task('run-ts-declaration-tests', function (done) {
242186
return gulp
243187
.src(['test/types/**/*', 'types/**/*'], { base: '.' })
244188
.pipe(
@@ -250,25 +194,14 @@ gulp.task('run-ts-declaration-tests', function () {
250194
strictNullChecks: true
251195
})
252196
)
253-
.on('error', function () {
254-
failed = true
255-
})
256-
.on('finish', function () {
257-
if (failed) {
258-
console.log(
259-
'[ERROR] TypeScript declarations contain errors. Exiting...'
260-
)
261-
process.exit(1)
262-
}
263-
})
264197
.pipe(gulp.dest('build/test/types'))
198+
.on('error', err => done(err))
199+
.on('end', () => done())
265200
})
266201

267-
gulp.task('browser', gulp.series('build-browser-test', 'build-browser'))
268-
269202
gulp.task('all', gulp.series('nodejs', 'browser'))
270203

271-
gulp.task('test-browser', gulp.series('all', 'run-browser-test'))
204+
gulp.task('test-browser', gulp.series('browser', 'run-browser-test'))
272205

273206
gulp.task(
274207
'test',
@@ -297,38 +230,6 @@ function newJasmineConsoleReporter () {
297230
})
298231
}
299232

300-
function babelifyTransform () {
301-
return babelify.configure(babelConfig())
302-
}
303-
304-
function babelConfig () {
305-
return {
306-
presets: [['@babel/preset-env']],
307-
plugins: ['@babel/plugin-transform-runtime']
308-
}
309-
}
310-
311-
function browserifyTransformNodeToBrowserRequire () {
312-
var nodeRequire = '/node'
313-
var browserRequire = '/browser'
314-
315-
return transformTools.makeRequireTransform(
316-
'bodeToBrowserRequireTransform',
317-
{ evaluateArguments: true },
318-
function (args, opts, cb) {
319-
var requireArg = args[0]
320-
var endsWithNodeRequire =
321-
requireArg.slice(-nodeRequire.length) === nodeRequire
322-
if (endsWithNodeRequire) {
323-
var newRequireArg = requireArg.replace(nodeRequire, browserRequire)
324-
return cb(null, "require('" + newRequireArg + "')")
325-
} else {
326-
return cb()
327-
}
328-
}
329-
)
330-
}
331-
332233
function runKarma (browser, cb) {
333234
new karma.Server(
334235
{

package-lock.json

Lines changed: 60 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,13 @@
7676
"husky": "^2.3.0",
7777
"jasmine-console-reporter": "^3.1.0",
7878
"karma": "^4.1.0",
79+
"karma-browserify": "^6.0.0",
7980
"karma-chrome-launcher": "^2.2.0",
8081
"karma-edge-launcher": "^0.4.2",
8182
"karma-firefox-launcher": "^1.1.0",
8283
"karma-ie-launcher": "^1.0.0",
8384
"karma-jasmine": "^2.0.1",
85+
"karma-source-map-support": "^1.4.0",
8486
"karma-spec-reporter": "^0.0.32",
8587
"lint-staged": "^8.1.6",
8688
"lodash": "^4.17.11",
@@ -91,7 +93,6 @@
9193
"prettier-eslint-cli": "^4.7.1",
9294
"run-sequence": "^2.2.1",
9395
"semver": "^6.0.0",
94-
"through2": "~3.0.1",
9596
"tmp": "0.1.0",
9697
"typescript": "^3.4.5",
9798
"vinyl-buffer": "^1.0.1",

support/inject-browser-transform.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const transformTools = require('browserify-transform-tools')
2+
3+
const nodeRequire = '/node'
4+
const browserRequire = '/browser'
5+
6+
module.exports = transformTools.makeRequireTransform(
7+
'nodeToBrowserRequireTransform',
8+
{ evaluateArguments: true },
9+
function (args, opts, cb) {
10+
const requireArg = args[0]
11+
const endsWithNodeRequire =
12+
requireArg.slice(-nodeRequire.length) === nodeRequire
13+
if (endsWithNodeRequire) {
14+
const newRequireArg = requireArg.replace(nodeRequire, browserRequire)
15+
return cb(null, "require('" + newRequireArg + "')")
16+
} else {
17+
return cb()
18+
}
19+
}
20+
)

test/browser/karma-chrome.conf.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,21 @@
1818
*/
1919
module.exports = function (config) {
2020
config.set({
21-
frameworks: ['jasmine'],
2221
basePath: '../../',
23-
files: ['build/browser/neo4j-web.test.js'],
22+
browserify: {
23+
debug: true,
24+
transform: ['babelify', './support/inject-browser-transform']
25+
},
26+
files: [
27+
'src/**/!(node)/*.js',
28+
'test/**/!(node)/*.test.js',
29+
'test/!(examples).test.js'
30+
],
31+
preprocessors: {
32+
'src/**/*.js': ['browserify'],
33+
'test/**/*.test.js': ['browserify']
34+
},
35+
frameworks: ['browserify', 'source-map-support', 'jasmine'],
2436
reporters: ['spec'],
2537
port: 9876, // karma web server port
2638
colors: true,

0 commit comments

Comments
 (0)