summaryrefslogtreecommitdiff
path: root/node_modules/get-source/test/test.browser.js
diff options
context:
space:
mode:
authorakiyamn2023-09-24 23:22:21 +1000
committerakiyamn2023-09-24 23:22:21 +1000
commit4e87195739f2a5d9a05451b48773c8afdc680765 (patch)
tree9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/get-source/test/test.browser.js
downloadprice-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.js98
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);
+ })
+ })
+ }
+ })
+})
+
+/* ------------------------------------------------------------------------ */