diff options
| author | akiyamn | 2023-09-24 23:22:21 +1000 |
|---|---|---|
| committer | akiyamn | 2023-09-24 23:22:21 +1000 |
| commit | 4e87195739f2a5d9a05451b48773c8afdc680765 (patch) | |
| tree | 9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/get-source/test/test.browser.js | |
| download | price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.tar.gz price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.zip | |
Initial commit (by create-cloudflare CLI)
Diffstat (limited to 'node_modules/get-source/test/test.browser.js')
| -rw-r--r-- | node_modules/get-source/test/test.browser.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/node_modules/get-source/test/test.browser.js b/node_modules/get-source/test/test.browser.js new file mode 100644 index 0000000..ed7b523 --- /dev/null +++ b/node_modules/get-source/test/test.browser.js @@ -0,0 +1,98 @@ + +/* TODO: make it work in Travis CI + ------------------------------------------------------------------------ */ + +const selenium = require ('selenium-webdriver/testing') + +/* ------------------------------------------------------------------------ */ + +selenium.describe ('Chrome test', (done) => { + + const webdriver = require ('selenium-webdriver') + , path = require ('path') + , fs = require ('fs') + , memFS = new (require ('memory-fs')) () + , it = selenium.it + , webpack = require ('webpack') + , logging = require ('selenium-webdriver/lib/logging') + + let driver + +/* Prepare ChromeDriver (with CORS disabled and log interception enabled) */ + + selenium.before (() => driver = + new webdriver + .Builder () + .withCapabilities ( + webdriver.Capabilities + .chrome () + .setLoggingPrefs (new logging.Preferences ().setLevel (logging.Type.BROWSER, logging.Level.ALL)) + .set ('chromeOptions', { + 'args': ['--disable-web-security'] })) + .build ()) + + selenium.after (() => driver.quit ()) + + it ('works', async () => { + + /* Compile get-source */ + + const compiledScript = await (new Promise (resolve => { Object.assign (webpack ({ + + entry: './test/files/get-source.webpack.entry.js', + output: { path: '/', filename: 'get-source.webpack.compiled.js' }, + plugins: [ new webpack.IgnorePlugin(/^fs$/) ] + + }), { outputFileSystem: memFS }).run ((err, stats) => { + + if (err) throw err + + resolve (memFS.readFileSync ('/get-source.webpack.compiled.js').toString ('utf-8')) + }) + })) + + /* Inject it into Chrome */ + + driver.get ('file://' + path.resolve ('./test/files/test.html')) + driver.executeScript (compiledScript) + + /* Execute test */ + + const exec = fn => driver.executeScript (`(${fn.toString ()})()`) + + try { + + await exec (function () { + + path.relativeToFile ('http://foo.com/scripts/bar.js', '../bar.js.map') + .should.equal ('http://foo.com/bar.js.map') + + path.relativeToFile ('http://foo.com/scripts/bar.js', 'http://bar.js.map') + .should.equal ('http://bar.js.map') + + path.relativeToFile ('http://foo.com/scripts/bar.js', '/bar.js.map') + .should.equal ('file:///bar.js.map') + + path.relativeToFile ('http://foo.com/scripts/bar.js', '//bar.com/bar.js.map') + .should.equal ('http://bar.com/bar.js.map') + + var loc = getSource ('../original.uglified.beautified.js').resolve ({ line: 2, column: 4 }) + + loc.line.should.equal (4) + loc.column.should.equal (2) + loc.sourceFile.path.should.contain ('test/files/original.js') + loc.sourceLine.should.equal ('\treturn \'hello world\' }') + }) + + } catch (e) { throw e } finally { + + driver.manage ().logs ().get (logging.Type.BROWSER).then (entries => { + entries.forEach (entry => { + console.log('[BROWSER] [%s] %s', entry.level.name, entry.message); + }) + }) + } + }) +}) + +/* ------------------------------------------------------------------------ */ |
