Skip to content

Commit 5ec814d

Browse files
committed
feat: infer prop types
1 parent c558185 commit 5ec814d

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

Diff for: ct-web/src/components/Counter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
let remountCount = 0
22

33
export class Counter extends HTMLElement {
4-
set count(count: string) {
4+
set count(count: number) {
55
this.innerHTML = `
66
<div>
77
<div id="props">${count}</div>

Diff for: playwright-ct-web/index.d.ts

+11-9
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,28 @@ type JsonValue = JsonPrimitive | JsonObject | JsonArray;
3939
type JsonArray = JsonValue[];
4040
type JsonObject = { [Key in string]?: JsonValue };
4141

42+
// TODO: get props, probably by filter readonly and function types?
43+
type ComponentProps<Component extends HTMLElement> = Partial<Component>;
44+
4245
type Slot = string | string[];
4346

44-
export interface MountOptions {
45-
props?: Props;
47+
export interface MountOptions<HooksConfig extends JsonObject, Component extends HTMLElement> {
48+
props?: ComponentProps<Component>;
4649
slots?: Record<string, Slot> & { default?: Slot };
4750
on?: Record<string, Function>;
4851
hooksConfig?: HooksConfig;
4952
}
5053

51-
interface MountResult<
52-
Props extends Record<string, unknown>
53-
> extends Locator {
54+
interface MountResult<Component extends HTMLElement> extends Locator {
5455
unmount(): Promise<void>;
55-
update(options: Omit<MountOptions<never, Props>, 'hooksConfig'>): Promise<void>;
56+
update(options: Omit<MountOptions<never, Component>, 'hooksConfig'>): Promise<void>;
5657
}
5758

5859
export interface ComponentFixtures {
59-
mount<HooksConfig extends JsonObject>(
60-
component: new (...args: any[]) => HTMLElement, options?: MountOptions
61-
): Promise<MountResult<any>>;
60+
mount<HooksConfig extends JsonObject, Component extends HTMLElement = HTMLElement>(
61+
component: new (...args: any[]) => Component,
62+
options?: MountOptions<HooksConfig, Component>
63+
): Promise<MountResult<Component>>;
6264
}
6365

6466
export const test: TestType<

Diff for: playwright-ct-web/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sand4rt/experimental-ct-web",
3-
"version": "0.0.8",
3+
"version": "0.0.9",
44
"description": "Playwright Component Testing for Web Components",
55
"homepage": "https://playwright.dev",
66
"engines": {

0 commit comments

Comments
 (0)