Skip to content

Commit

Permalink
chore: test built types export (#945)
Browse files Browse the repository at this point in the history
  • Loading branch information
straker authored Nov 22, 2023
1 parent d5becec commit aab6d3c
Show file tree
Hide file tree
Showing 12 changed files with 136 additions and 6 deletions.
3 changes: 2 additions & 1 deletion packages/playwright/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,10 @@
"prebuild": "rimraf dist",
"build": "tsup src/index.ts --dts --format esm,cjs",
"test": "mocha --timeout 60000 -r ts-node/register 'test/**.spec.ts'",
"test:export": "npm run test:esm && npm run test:commonjs",
"test:export": "npm run test:esm && npm run test:commonjs && npm run test:ts",
"test:esm": "node test/esmTest.mjs",
"test:commonjs": "node test/commonjsTest.js",
"test:ts": "tsc test/tsTest.ts --noEmit --skipLibCheck --esModuleInterop",
"coverage": "nyc npm run test",
"prepare": "npx playwright install && npm run build"
},
Expand Down
21 changes: 21 additions & 0 deletions packages/playwright/test/tsTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// This file isn't executed; we only care that typescript can successfully
// build/typecheck. It is a smoke test that our build process is producing a
// basically-reasonable index.d.ts.

// Detailed tests of individual types should instead be covered by unit tests.

import { AxeBuilder as NamedImportAxeBuilder } from '../dist/index.js';
import DefaultImportAxeBuilder from '../dist/index.js';
import type { Page } from 'playwright-core';

// See https://stackoverflow.com/a/55541672
type IsAny<T> = 0 extends 1 & T ? true : false;

// If the imports don't have typings assigned, these will fail
// with "ts(2322): Type 'false' is not assignable to type 'true'."
(x: IsAny<typeof NamedImportAxeBuilder>): false => x;
(x: IsAny<typeof DefaultImportAxeBuilder>): false => x;

new NamedImportAxeBuilder({ page: {} as Page }).withRules('label').analyze();

new DefaultImportAxeBuilder({ page: {} as Page }).withRules('label').analyze();
3 changes: 2 additions & 1 deletion packages/puppeteer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@
"scripts": {
"build": "tsup src/index.ts --dts --format esm,cjs",
"test": "mocha --timeout 60000 -r ts-node/register 'test/**.spec.ts'",
"test:export": "npm run test:esm && npm run test:commonjs",
"test:export": "npm run test:esm && npm run test:commonjs && npm run test:ts",
"test:esm": "node test/esmTest.mjs",
"test:commonjs": "node test/commonjsTest.js",
"test:ts": "tsc test/tsTest.ts --noEmit --skipLibCheck --esModuleInterop",
"coverage": "nyc npm run test",
"prepublishOnly": "npm run build"
},
Expand Down
21 changes: 21 additions & 0 deletions packages/puppeteer/test/tsTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// This file isn't executed; we only care that typescript can successfully
// build/typecheck. It is a smoke test that our build process is producing a
// basically-reasonable index.d.ts.

// Detailed tests of individual types should instead be covered by unit tests.

import { AxePuppeteer as NamedImportAxeBuilder } from '../dist/index.js';
import DefaultImportAxeBuilder from '../dist/index.js';
import type { Page } from 'puppeteer';

// See https://stackoverflow.com/a/55541672
type IsAny<T> = 0 extends 1 & T ? true : false;

// If the imports don't have typings assigned, these will fail
// with "ts(2322): Type 'false' is not assignable to type 'true'."
(x: IsAny<typeof NamedImportAxeBuilder>): false => x;
(x: IsAny<typeof DefaultImportAxeBuilder>): false => x;

new NamedImportAxeBuilder({} as Page).withRules('label').analyze();

new DefaultImportAxeBuilder({} as Page).withRules('label').analyze();
3 changes: 2 additions & 1 deletion packages/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@
"build": "tsup index.ts --dts --format esm,cjs",
"prepare": "npm run build",
"test": "tsc && npm run test:types && jest",
"test:export": "npm run test:esm && npm run test:commonjs",
"test:export": "npm run test:esm && npm run test:commonjs && npm run test:ts",
"test:esm": "node test/esmTest.mjs",
"test:commonjs": "node test/commonjsTest.js",
"test:ts": "tsc test/tsTest.ts --noEmit --skipLibCheck --esModuleInterop",
"test:types": "cd test && tsc"
},
"keywords": [
Expand Down
18 changes: 18 additions & 0 deletions packages/react/test/tsTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// This file isn't executed; we only care that typescript can successfully
// build/typecheck. It is a smoke test that our build process is producing a
// basically-reasonable index.d.ts.

// Detailed tests of individual types should instead be covered by unit tests.

import reactAxe from '../dist/index.js';
import React from 'react';
import ReactDOM from 'react-dom';

// See https://stackoverflow.com/a/55541672
type IsAny<T> = 0 extends 1 & T ? true : false;

// If the imports don't have typings assigned, these will fail
// with "ts(2322): Type 'false' is not assignable to type 'true'."
(x: IsAny<typeof reactAxe>): false => x;

reactAxe(React, ReactDOM, 1000);
3 changes: 2 additions & 1 deletion packages/reporter-earl/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@
"scripts": {
"start": "NODE_OPTIONS=--experimental-vm-modules jest --watch --env=jsdom",
"test": "npm run build && npm run test:unit",
"test:export": "npm run test:esm && npm run test:commonjs",
"test:export": "npm run test:esm && npm run test:commonjs && npm run test:ts",
"test:esm": "node tests/esmTest.mjs",
"test:commonjs": "node tests/commonjsTest.js",
"test:ts": "tsc tests/tsTest.ts --noEmit --skipLibCheck --esModuleInterop",
"test:unit": "NODE_OPTIONS=--experimental-vm-modules jest --collectCoverage",
"build": "tsup src/axeReporterEarl.ts --dts --format esm,cjs",
"prepublishOnly": "npm run build"
Expand Down
18 changes: 18 additions & 0 deletions packages/reporter-earl/tests/tsTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// This file isn't executed; we only care that typescript can successfully
// build/typecheck. It is a smoke test that our build process is producing a
// basically-reasonable index.d.ts.

// Detailed tests of individual types should instead be covered by unit tests.

import DefaultImportReporter from '../dist/axeReporterEarl.js';
// import axe from 'axe-core';

// See https://stackoverflow.com/a/55541672
type IsAny<T> = 0 extends 1 & T ? true : false;

// If the imports don't have typings assigned, these will fail
// with "ts(2322): Type 'false' is not assignable to type 'true'."
(x: IsAny<typeof DefaultImportReporter>): false => x;

// TODO: this doesn't work as our types are broken
// axe.configure({ reporter: DefaultImportReporter });
3 changes: 2 additions & 1 deletion packages/webdriverio/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@
"prebuild": "rimraf dist",
"build": "tsup src/index.ts --dts --format esm,cjs",
"test": "mocha --timeout 60000 -r ts-node/register 'test/**.spec.ts'",
"test:export": "npm run test:esm && npm run test:commonjs",
"test:export": "npm run test:esm && npm run test:commonjs && npm run test:ts",
"test:esm": "node test/esmTest.mjs",
"test:commonjs": "node test/commonjsTest.js",
"test:ts": "tsc test/tsTest.ts --noEmit --skipLibCheck --esModuleInterop",
"coverage": "nyc npm run test",
"prepare": "npm run build"
},
Expand Down
25 changes: 25 additions & 0 deletions packages/webdriverio/test/tsTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// This file isn't executed; we only care that typescript can successfully
// build/typecheck. It is a smoke test that our build process is producing a
// basically-reasonable index.d.ts.

// Detailed tests of individual types should instead be covered by unit tests.

import { AxeBuilder as NamedImportAxeBuilder } from '../dist/index.js';
import DefaultImportAxeBuilder from '../dist/index.js';
import type { Browser } from 'webdriverio';

// See https://stackoverflow.com/a/55541672
type IsAny<T> = 0 extends 1 & T ? true : false;

// If the imports don't have typings assigned, these will fail
// with "ts(2322): Type 'false' is not assignable to type 'true'."
(x: IsAny<typeof NamedImportAxeBuilder>): false => x;
(x: IsAny<typeof DefaultImportAxeBuilder>): false => x;

new NamedImportAxeBuilder({ client: {} as Browser })
.withRules('label')
.analyze();

new DefaultImportAxeBuilder({ client: {} as Browser })
.withRules('label')
.analyze();
3 changes: 2 additions & 1 deletion packages/webdriverjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@
"prebuild": "rimraf dist",
"build": "tsup src/index.ts --dts --format esm,cjs",
"test": "mocha --timeout 60000 -r ts-node/register 'test/**.spec.ts'",
"test:export": "npm run test:esm && npm run test:commonjs",
"test:export": "npm run test:esm && npm run test:commonjs && npm run test:ts",
"test:esm": "node test/esmTest.mjs",
"test:commonjs": "node test/commonjsTest.js",
"test:ts": "tsc test/tsTest.ts --noEmit --skipLibCheck --esModuleInterop",
"coverage": "nyc npm run test",
"prepare": "npm run build"
},
Expand Down
21 changes: 21 additions & 0 deletions packages/webdriverjs/test/tsTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// This file isn't executed; we only care that typescript can successfully
// build/typecheck. It is a smoke test that our build process is producing a
// basically-reasonable index.d.ts.

// Detailed tests of individual types should instead be covered by unit tests.

import { AxeBuilder as NamedImportAxeBuilder } from '../dist/index.js';
import DefaultImportAxeBuilder from '../dist/index.js';
import type { WebDriver } from 'selenium-webdriver';

// See https://stackoverflow.com/a/55541672
type IsAny<T> = 0 extends 1 & T ? true : false;

// If the imports don't have typings assigned, these will fail
// with "ts(2322): Type 'false' is not assignable to type 'true'."
(x: IsAny<typeof NamedImportAxeBuilder>): false => x;
(x: IsAny<typeof DefaultImportAxeBuilder>): false => x;

new NamedImportAxeBuilder({} as WebDriver).withRules('label').analyze();

new DefaultImportAxeBuilder({} as WebDriver).withRules('label').analyze();

0 comments on commit aab6d3c

Please sign in to comment.