in src/formatter/javascript.ts [185:243]
generateAction(actionInContext: ActionInContext) {
const { action } = actionInContext;
const { pageAlias } = actionInContext.frame;
if (action.name === 'openPage') {
return '';
}
// Don't cleanup page object managed by Synthetics
const isCleanUp = action.name === 'closePage' && pageAlias === 'page';
if (isCleanUp) {
return '';
}
const stepIndent = this.insideStep ? 2 : 0;
const offset = this.isProject ? 2 + stepIndent : 0 + stepIndent;
const formatter = new JavaScriptFormatter(offset);
const locators = actionInContext.frame.framePath.map(
selector => `.${super._asLocator(selector)}.contentFrame()`
);
const subject = `${pageAlias}${locators.join('')}`;
const signals = toSignalMap(action);
if (signals.dialog) {
formatter.add(` ${pageAlias}.once('dialog', dialog => {
console.log(\`Dialog message: $\{dialog.message()}\`);
dialog.dismiss().catch(() => {});
});`);
}
if (signals.popup)
formatter.add(
`const ${signals.popup.popupAlias}Promise = ${pageAlias}.waitForEvent('popup');`
);
if (signals.download)
formatter.add(
`const download${signals.download.downloadAlias}Promise = ${pageAlias}.waitForEvent('download');`
);
// Add assertion from Synthetics.
const isAssert = action.name === 'assert' && action.isAssert;
if (isAssert && action.command) {
formatter.add(toAssertCall(pageAlias, action));
} else {
formatter.add(super._generateActionCall(subject, actionInContext));
}
if (signals.popup)
formatter.add(
`${signals.popup.popupAlias} = await ${signals.popup.popupAlias}Promise;`
);
if (signals.download)
formatter.add(
`download${signals.download.downloadAlias} = await download${signals.download.downloadAlias}Promise;`
);
this.previousContext = actionInContext;
return formatter.format();
}