Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: test built types export #945

Merged
merged 1 commit into from
Nov 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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';
Comment on lines +7 to +8
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could probably do it like this too. Two imports on the same file is a little odd.

Suggested change
import { AxeBuilder as NamedImportAxeBuilder } from '../dist/index.js';
import DefaultImportAxeBuilder from '../dist/index.js';
import {
default as DefaultImportAxeBuilder,
AxeBuilder as NamedImportAxeBuilder
} 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
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #944

// 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();
Loading