{"_id":"@ambient-labs/the_floor_is_lava","_rev":"1-9e3137ebed6e7e0bba6e0e7814378d54","name":"@ambient-labs/the_floor_is_lava","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@ambient-labs/the_floor_is_lava","version":"0.1.0","author":{"name":"Ambient Labs"},"license":"MIT","_id":"@ambient-labs/the_floor_is_lava@0.1.0","maintainers":[{"name":"ambient-labs","email":"ambient-labs@thdl.us"}],"homepage":"https://github.com/ambient-labs/the_floor_is_lava#readme","bugs":{"url":"https://github.com/ambient-labs/the_floor_is_lava/issues"},"bin":{"the_floor_is_lava":"dist/bin/cli.js"},"dist":{"shasum":"54b54bd265ee52029eab7616e3836925eb4f335d","tarball":"https://registry.npmjs.org/@ambient-labs/the_floor_is_lava/-/the_floor_is_lava-0.1.0.tgz","fileCount":134,"integrity":"sha512-z+PL7etxEsL6KLa2bMCqPqnPM+7Pc+Jfyl0DoBjXaqtjcg75MQ9K3Vdw94SBjfh0KmiUq4WnoIozu83ZB4q1bw==","signatures":[{"sig":"MEUCIQCTTe0vgUbKb1jfBxMM2TXhmAAFo8ue6hn9CKpXyXda5gIgXozWmVCT0yV3umgaOJENtfeMXQRd+UVWrSGCvFw71wM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111776},"main":"./dist/index.js","type":"module","_from":"file:ambient-labs-the_floor_is_lava-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","wireit":{"lint":{"command":"eslint -c .eslintrc.cjs src --ext .ts"},"build":{"files":["../../README.md","../../LICENSE","./src/**/*.ts","./src/**/*.ejs","package.json","rollup.config.mjs","tsconfig.json"],"output":["./dist/**","./LICENSE","./README.md"],"command":"rimraf ./dist && pnpm build:esm && pnpm copy:templates && pnpm copy:package-files && pnpm build:check"},"build:esm":{"command":"tsc"},"build:check":{"command":"path-exists ./dist/index.js && path-exists ./dist/index.d.ts "},"copy:templates":{"command":"cpx \"src/**/*.ejs\" ./dist"},"copy:package-files":{"command":"cp ../../README.md ./README.md && cp ../../LICENSE ./LICENSE"}},"engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js"},"scripts":{"lint":"wireit","test":"vitest","build":"wireit","build:esm":"wireit","build:check":"wireit","copy:templates":"wireit","copy:package-files":"wireit"},"_npmUser":{"name":"ambient-labs","email":"ambient-labs@thdl.us"},"_resolved":"/private/var/folders/hk/t7l9fq_n72df4b_9v89bmr9h0000gn/T/72bf4b317234a7793854641f3f003bbb/ambient-labs-the_floor_is_lava-0.1.0.tgz","_integrity":"sha512-z+PL7etxEsL6KLa2bMCqPqnPM+7Pc+Jfyl0DoBjXaqtjcg75MQ9K3Vdw94SBjfh0KmiUq4WnoIozu83ZB4q1bw==","repository":{"url":"git+https://github.com/ambient-labs/the_floor_is_lava.git","type":"git"},"_npmVersion":"10.8.2","description":"Tools for performing integration tests across a variety of environments for Javascript libraries.","directories":{},"_nodeVersion":"22.5.1","dependencies":{"ejs":"^3.1.9","chalk":"^5.3.0","esbuild":"^0.20.2","webpack":"^5.91.0","fs-extra":"^11.2.0","get-port":"^7.1.0","commander":"^12.0.0","package-up":"^5.0.0","tunnelmole":"^2.2.14","serve-handler":"^6.1.5","html-webpack-plugin":"^5.6.0","@schemastore/package":"^0.0.10"},"_hasShrinkwrap":false,"devDependencies":{"cpx2":"^7.0.1","vite":"^5.2.8","tslib":"^2.6.2","eslint":"8.47.0","rimraf":"^5.0.5","rollup":"^4.14.0","vitest":"^1.4.0","wireit":"^0.14.4","puppeteer":"^22.6.2","@types/ejs":"^3.1.5","playwright":"^1.43.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/js-yaml":"^4.0.5","@types/fs-extra":"^11.0.4","path-exists-cli":"^2.0.0","vite-plugin-dts":"^3.8.1","rollup-plugin-dts":"^6.1.0","selenium-webdriver":"^4.19.0","@rollup/plugin-json":"^6.1.0","@types/serve-handler":"^6.1.4","rollup-plugin-string":"^3.0.0","rollup-plugin-esbuild":"^6.1.1","eslint-config-prettier":"^9.1.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.6","@types/selenium-webdriver":"^4.1.22","@typescript-eslint/parser":"6.4.0","rollup-plugin-typescript2":"^0.36.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"6.4.0","rollup-plugin-peer-deps-external":"^2.2.4"},"_npmOperationalInternal":{"tmp":"tmp/the_floor_is_lava_0.1.0_1724757442377_0.09934892987736221","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@ambient-labs/the_floor_is_lava","type":"module","description":"Tools for performing integration tests across a variety of environments for Javascript libraries.","version":"0.1.1","author":{"name":"Ambient Labs"},"bin":{"the_floor_is_lava":"dist/bin/cli.js"},"repository":{"type":"git","url":"git+https://github.com/ambient-labs/the_floor_is_lava.git"},"main":"./dist/index.js","module":"./dist/index.js","exports":{".":"./dist/index.js"},"wireit":{"lint":{"command":"eslint -c .eslintrc.cjs src --ext .ts"},"build:check":{"command":"path-exists ./dist/index.js && path-exists ./dist/index.d.ts "},"build:esm":{"command":"tsc"},"copy:templates":{"command":"cpx \"src/**/*.ejs\" ./dist"},"copy:package-files":{"command":"cp ../../README.md ./README.md && cp ../../LICENSE ./LICENSE"},"build":{"command":"rimraf ./dist && pnpm build:esm && pnpm copy:templates && pnpm copy:package-files && pnpm build:check","files":["../../README.md","../../LICENSE","./src/**/*.ts","./src/**/*.ejs","package.json","rollup.config.mjs","tsconfig.json"],"output":["./dist/**","./LICENSE","./README.md"]}},"license":"MIT","devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-typescript":"^11.1.6","@types/ejs":"^3.1.5","@types/fs-extra":"^11.0.4","@types/jest":"^29.5.12","@types/js-yaml":"^4.0.5","@types/selenium-webdriver":"^4.1.22","@types/serve-handler":"^6.1.4","@typescript-eslint/eslint-plugin":"6.4.0","@typescript-eslint/parser":"6.4.0","cpx2":"^7.0.1","eslint":"8.47.0","eslint-config-prettier":"^9.1.0","path-exists-cli":"^2.0.0","rimraf":"^5.0.5","rollup":"^4.14.0","rollup-plugin-dts":"^6.1.0","rollup-plugin-esbuild":"^6.1.1","rollup-plugin-peer-deps-external":"^2.2.4","rollup-plugin-string":"^3.0.0","rollup-plugin-typescript2":"^0.36.0","tslib":"^2.6.2","typescript":"^5.4.4","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0","playwright":"^1.43.0","puppeteer":"^22.6.2","selenium-webdriver":"^4.19.0","wireit":"^0.14.4"},"engines":{"node":">=20.0.0"},"dependencies":{"@schemastore/package":"^0.0.10","chalk":"^5.3.0","commander":"^12.0.0","ejs":"^3.1.9","esbuild":"^0.20.2","fs-extra":"^11.2.0","get-port":"^7.1.0","html-webpack-plugin":"^5.6.0","package-up":"^5.0.0","serve-handler":"^6.1.5","tunnelmole":"^2.2.14","webpack":"^5.91.0"},"scripts":{"lint":"wireit","test":"vitest","copy:templates":"wireit","copy:package-files":"wireit","build":"wireit","build:check":"wireit","build:esm":"wireit"},"_id":"@ambient-labs/the_floor_is_lava@0.1.1","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/ambient-labs/the_floor_is_lava/issues"},"homepage":"https://github.com/ambient-labs/the_floor_is_lava#readme","_integrity":"sha512-cQYF8T5jO0fY+OdZMukmiUnhXpClShOUAytpcvsIigB4R4mMTqe6GR5kgfHfVx98kObxwrv+sf9kis0k1i+QvQ==","_resolved":"/tmp/e00066dbe85130be5c34f35ea54ada1f/ambient-labs-the_floor_is_lava-0.1.1.tgz","_from":"file:ambient-labs-the_floor_is_lava-0.1.1.tgz","_nodeVersion":"20.16.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-cQYF8T5jO0fY+OdZMukmiUnhXpClShOUAytpcvsIigB4R4mMTqe6GR5kgfHfVx98kObxwrv+sf9kis0k1i+QvQ==","shasum":"b90933f5754814087a63002b0c0b328758b5fc34","tarball":"https://registry.npmjs.org/@ambient-labs/the_floor_is_lava/-/the_floor_is_lava-0.1.1.tgz","fileCount":134,"unpackedSize":111776,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGQG0gz0jW34ARWFdEnjp3siEZGAt/b1bCwE27sfSQvgIhAOXLCo1LnlG8fy2KhYLj9AORI5XCoav/pjs9z73ZCzXu"}]},"_npmUser":{"name":"ambient-labs","email":"ambient-labs@thdl.us"},"directories":{},"maintainers":[{"name":"ambient-labs","email":"ambient-labs@thdl.us"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/the_floor_is_lava_0.1.1_1724757597146_0.2392854400072455"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-27T11:17:22.293Z","modified":"2024-08-27T11:19:57.536Z","0.1.0":"2024-08-27T11:17:22.513Z","0.1.1":"2024-08-27T11:19:57.350Z"},"bugs":{"url":"https://github.com/ambient-labs/the_floor_is_lava/issues"},"author":{"name":"Ambient Labs"},"license":"MIT","homepage":"https://github.com/ambient-labs/the_floor_is_lava#readme","repository":{"type":"git","url":"git+https://github.com/ambient-labs/the_floor_is_lava.git"},"description":"Tools for performing integration tests across a variety of environments for Javascript libraries.","maintainers":[{"name":"ambient-labs","email":"ambient-labs@thdl.us"}],"readme":"# `the_floor_is_lava` \n\nA package for testing.\n\n## Intended Audience\n\nThis is a library for library authors to test their libraries across a variety of environments (including browsers and server-side).\n\n## Quickstart\n\nYou'll need to first set up a testing library of your choice. I like `vitest`.\n\nIn your library, set up a dedicated testing folder:\n\n```bash\ncd /path/to/your/library\nmkdir -p test\n```\n\nAnd add a test (assumes you're using `vitest`):\n\n```javascript\n// test/my-library-test.js\n\nimport path from 'path';\nimport * as url from 'url';\nimport lib from '../src/my-library.js'\nimport { ServersideTestRunner, ClientsideTestRunner, bundle, SupportedDriver } from 'the_floor_is_lava'\nimport { chromium, } from 'playwright'\n\nconst __dirname = url.fileURLToPath(new URL('.', import.meta.url))\nconst ROOT = path.resolve(__dirname, '..')\nconst TMP = path.resolve(ROOT, '.tmp') // a temporary folder to hold the files we write out\n\ndescribe('My Library', () => {\n  test('it should run in Node', async () => {\n    const outDir = path.resolve(TMP, 'node')\n    const nodeRunner = new ServersideTestRunner({\n      cwd: outDir,\n      module: true,\n    });\n    await nodeRunner.beforeAll(async () => {\n      await bundle('node', outDir)\n    })\n    expect(await nodeRunner.run(`\n      import lib from 'my-library'\n      return lib('foo')\n    `)).toEqual('foo')\n  })\n\n  test('it should run in the browser, UMD style', async () => {\n    const outDir = path.resolve(TMP, 'browser')\n    const bundler = 'esbuild'\n    const browserRunner = new ClientsideTestRunner({\n      dist: outDir,\n      driver: SupportedDriver.playwright,\n      launch: chromium.launch.bind(chromium),\n    })\n    await browserRunner.beforeAll(() => bundle(bundler, outDir, {\n\n    }))\n    const result = await browserRunner.page.evaluate(() => {\n      return window['my-library']('foo')\n    }, {});\n\n    expect(result).toEqual('foo');\n  });\n\n  test('it should run in the browser, ESM style', async () => {\n    const outDir = path.resolve(TMP, 'browser')\n    const bundler = 'esbuild'\n    const browserRunner = new ClientsideTestRunner({\n      dist: outDir,\n      driver: SupportedDriver.playwright,\n      launch: chromium.launch.bind(chromium),\n    })\n    await browserRunner.beforeAll(() => bundle(bundler, outDir, {\n      script: `\n      import lib from 'my-library'\n      export default lib\n      `,\n    }))\n    const result = await browserRunner.page.evaluate(() => {\n      return window['script']('foo')\n    }, {});\n\n    expect(result).toEqual('foo');\n  });\n})\n```\n\n## Bundlers\n\n`the_floor_is_lava` offers bundlers for the following strategies:\n\n- `esbuild`\n- `webpack`\n- `UMD`\n- `Node`\n\n`the_floor_is_lava` also offers the ability to test in the following environments:\n\n- Clientside\n  - via a browser, with Puppeteer\n  - via a real browser, with Browserstack\n- Serverside (Node.js)\n","readmeFilename":"README.md"}