Skip to content

Commit 9e855d5

Browse files
dgozmanSkn0tt
andauthored
cherry-pick(#33821): fix(recorder): allow clearing when recording is disabled (#33900)
Co-authored-by: Simon Knott <[email protected]>
1 parent 9365eb5 commit 9e855d5

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

packages/playwright-core/src/server/recorder/recorderCollection.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class RecorderCollection extends EventEmitter {
3838

3939
restart() {
4040
this._actions = [];
41-
this._fireChange();
41+
this.emit('change', []);
4242
}
4343

4444
setEnabled(enabled: boolean) {
@@ -128,6 +128,7 @@ export class RecorderCollection extends EventEmitter {
128128
private _fireChange() {
129129
if (!this._enabled)
130130
return;
131+
131132
this.emit('change', collapseActions(this._actions));
132133
}
133134
}

tests/library/inspector/cli-codegen-1.spec.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,4 +926,34 @@ await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`)
926926
const predicate = (msg: ConsoleMessage) => msg.type() === 'error' && /Content[\- ]Security[\- ]Policy/i.test(msg.text());
927927
await expect(page.waitForEvent('console', { predicate, timeout: 1000 })).rejects.toThrow();
928928
});
929+
930+
test('should clear when recording is disabled', { annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/33802' } }, async ({ openRecorder }) => {
931+
const { recorder } = await openRecorder();
932+
933+
await recorder.setContentAndWait(`
934+
<button id="foo" onclick="console.log('click')">Foo</button>
935+
<button id="bar" onclick="console.log('click')">Bar</button>
936+
`);
937+
938+
await recorder.hoverOverElement('#foo');
939+
let [sources] = await Promise.all([
940+
recorder.waitForOutput('JavaScript', 'click'),
941+
recorder.trustedClick(),
942+
]);
943+
944+
expect(sources.get('JavaScript').text).toContain(`getByRole('button', { name: 'Foo' }).click()`);
945+
946+
await recorder.recorderPage.getByRole('button', { name: 'Record' }).click();
947+
await recorder.recorderPage.getByRole('button', { name: 'Clear' }).click();
948+
await recorder.recorderPage.getByRole('button', { name: 'Record' }).click();
949+
950+
await recorder.hoverOverElement('#bar');
951+
[sources] = await Promise.all([
952+
recorder.waitForOutput('JavaScript', 'click'),
953+
recorder.trustedClick(),
954+
]);
955+
956+
expect(sources.get('JavaScript').text).toContain(`getByRole('button', { name: 'Bar' }).click()`);
957+
expect(sources.get('JavaScript').text).not.toContain(`getByRole('button', { name: 'Foo' })`);
958+
});
929959
});

0 commit comments

Comments
 (0)