Skip to content

Commit

Permalink
fix(codegen): add timeout to our actions, catch errors (#5188)
Browse files Browse the repository at this point in the history
  • Loading branch information
dgozman committed Jan 27, 2021
1 parent ff6b2b1 commit 321a873
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/server/supplements/injected/recorder.ts
Expand Up @@ -608,7 +608,7 @@ export class Recorder {

private async _performAction(action: actions.Action) {
this._performingAction = true;
await window.playwrightRecorderPerformAction(action);
await window.playwrightRecorderPerformAction(action).catch(e => {});
this._performingAction = false;

// Action could have changed DOM, update hovered model selectors.
Expand Down
5 changes: 5 additions & 0 deletions src/server/supplements/recorder/codeGenerator.ts
Expand Up @@ -64,6 +64,11 @@ export class CodeGenerator {
this._currentAction = action;
}

performedActionFailed(action: ActionInContext) {
if (this._currentAction === action)
this._currentAction = undefined;
}

didPerformAction(actionInContext: ActionInContext) {
const { action, pageAlias } = actionInContext;
let eraseLastAction = false;
Expand Down
34 changes: 20 additions & 14 deletions src/server/supplements/recorderSupplement.ts
Expand Up @@ -194,21 +194,27 @@ export class RecorderSupplement {
action
};
this._generator.willPerformAction(actionInContext);
if (action.name === 'click') {
const { options } = toClickOptions(action);
await frame.click(controller, action.selector, options);
}
if (action.name === 'press') {
const modifiers = toModifiers(action.modifiers);
const shortcut = [...modifiers, action.key].join('+');
await frame.press(controller, action.selector, shortcut);
try {
const kActionTimeout = 5000;
if (action.name === 'click') {
const { options } = toClickOptions(action);
await frame.click(controller, action.selector, { ...options, timeout: kActionTimeout });
}
if (action.name === 'press') {
const modifiers = toModifiers(action.modifiers);
const shortcut = [...modifiers, action.key].join('+');
await frame.press(controller, action.selector, shortcut, { timeout: kActionTimeout });
}
if (action.name === 'check')
await frame.check(controller, action.selector, { timeout: kActionTimeout });
if (action.name === 'uncheck')
await frame.uncheck(controller, action.selector, { timeout: kActionTimeout });
if (action.name === 'select')
await frame.selectOption(controller, action.selector, [], action.options.map(value => ({ value })), { timeout: kActionTimeout });
} catch (e) {
this._generator.performedActionFailed(actionInContext);
return;
}
if (action.name === 'check')
await frame.check(controller, action.selector);
if (action.name === 'uncheck')
await frame.uncheck(controller, action.selector);
if (action.name === 'select')
await frame.selectOption(controller, action.selector, [], action.options.map(value => ({ value })));
const timer = setTimeout(() => {
actionInContext.committed = true;
this._timers.delete(timer);
Expand Down

0 comments on commit 321a873

Please sign in to comment.