133 lines
20 KiB
JavaScript
133 lines
20 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const phase_1 = __importDefault(require("../test-run/phase"));
|
||
|
const types_1 = require("../errors/types");
|
||
|
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
||
|
const actions_1 = require("./commands/actions");
|
||
|
const test_run_1 = require("../errors/test-run");
|
||
|
const default_values_1 = require("../configuration/default-values");
|
||
|
class TestRunBookmark {
|
||
|
constructor(testRun, role) {
|
||
|
this.testRun = testRun;
|
||
|
this.role = role;
|
||
|
this.url = testcafe_hammerhead_1.SPECIAL_BLANK_PAGE;
|
||
|
this.ctx = null;
|
||
|
this.fixtureCtx = null;
|
||
|
this.dialogHandler = null;
|
||
|
this.iframeSelector = null;
|
||
|
this.speed = default_values_1.DEFAULT_SPEED_VALUE;
|
||
|
this.pageLoadTimeout = 0;
|
||
|
this.consoleMessages = null;
|
||
|
this.dialogHandler = this.testRun.activeDialogHandler;
|
||
|
this.iframeSelector = this.testRun.activeIframeSelector;
|
||
|
this.speed = this.testRun.speed;
|
||
|
this.pageLoadTimeout = this.testRun.pageLoadTimeout;
|
||
|
this.consoleMessages = this.testRun.consoleMessages;
|
||
|
}
|
||
|
async _initCtxs() {
|
||
|
if (this.testRun.compilerService) {
|
||
|
this.ctx = await this.testRun.compilerService.getCtx({ testRunId: this.testRun.id });
|
||
|
this.fixtureCtx = await this.testRun.compilerService.getFixtureCtx({ testRunId: this.testRun.id });
|
||
|
}
|
||
|
else {
|
||
|
this.ctx = this.testRun.ctx;
|
||
|
this.fixtureCtx = this.testRun.fixtureCtx;
|
||
|
}
|
||
|
}
|
||
|
async _restoreCtxs() {
|
||
|
if (this.testRun.compilerService) {
|
||
|
await this.testRun.compilerService.setCtx({
|
||
|
testRunId: this.testRun.id,
|
||
|
value: this.ctx,
|
||
|
});
|
||
|
await this.testRun.compilerService.setFixtureCtx({
|
||
|
testRunId: this.testRun.id,
|
||
|
value: this.fixtureCtx,
|
||
|
});
|
||
|
}
|
||
|
else {
|
||
|
this.testRun.ctx = this.ctx;
|
||
|
this.testRun.fixtureCtx = this.fixtureCtx;
|
||
|
}
|
||
|
}
|
||
|
async init() {
|
||
|
await this._initCtxs();
|
||
|
if (this.testRun.activeIframeSelector)
|
||
|
await this.testRun.executeCommand(new actions_1.SwitchToMainWindowCommand());
|
||
|
if (!this.role.opts.preserveUrl)
|
||
|
await this.role.setCurrentUrlAsRedirectUrl(this.testRun);
|
||
|
}
|
||
|
async _restoreDialogHandler() {
|
||
|
if (this.testRun.activeDialogHandler !== this.dialogHandler) {
|
||
|
const restoreDialogCommand = new actions_1.SetNativeDialogHandlerCommand({ dialogHandler: { fn: this.dialogHandler } });
|
||
|
await this.testRun.executeCommand(restoreDialogCommand);
|
||
|
}
|
||
|
}
|
||
|
async _restoreSpeed() {
|
||
|
if (this.testRun.speed !== this.speed) {
|
||
|
const restoreSpeedCommand = new actions_1.SetTestSpeedCommand({ speed: this.speed });
|
||
|
await this.testRun.executeCommand(restoreSpeedCommand);
|
||
|
}
|
||
|
}
|
||
|
async _restorePageLoadTimeout() {
|
||
|
if (this.testRun.pageLoadTimeout !== this.pageLoadTimeout) {
|
||
|
const restorePageLoadTimeoutCommand = new actions_1.SetPageLoadTimeoutCommand({ duration: this.pageLoadTimeout });
|
||
|
await this.testRun.executeCommand(restorePageLoadTimeoutCommand);
|
||
|
}
|
||
|
}
|
||
|
async _restoreWorkingFrame() {
|
||
|
if (this.testRun.activeIframeSelector !== this.iframeSelector) {
|
||
|
const switchWorkingFrameCommand = this.iframeSelector ?
|
||
|
new actions_1.SwitchToIframeCommand({ selector: this.iframeSelector }) :
|
||
|
new actions_1.SwitchToMainWindowCommand();
|
||
|
try {
|
||
|
await this.testRun.executeCommand(switchWorkingFrameCommand);
|
||
|
}
|
||
|
catch (err) {
|
||
|
if (err.code === types_1.TEST_RUN_ERRORS.actionElementNotFoundError)
|
||
|
throw new test_run_1.CurrentIframeNotFoundError();
|
||
|
if (err.code === types_1.TEST_RUN_ERRORS.actionIframeIsNotLoadedError)
|
||
|
throw new test_run_1.CurrentIframeIsNotLoadedError();
|
||
|
throw err;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
async _restorePage(url, stateSnapshot) {
|
||
|
await this.testRun.navigateToUrl(url, true, JSON.stringify(stateSnapshot));
|
||
|
}
|
||
|
_setConsoleMessages() {
|
||
|
this.testRun.consoleMessages = this.consoleMessages;
|
||
|
}
|
||
|
_setPhase(value) {
|
||
|
this.testRun.phase = value;
|
||
|
}
|
||
|
async restore(callsite, stateSnapshot) {
|
||
|
const prevPhase = await this.testRun.phase;
|
||
|
this._setPhase(phase_1.default.inBookmarkRestore);
|
||
|
await this._restoreCtxs();
|
||
|
this._setConsoleMessages();
|
||
|
try {
|
||
|
await this._restoreSpeed();
|
||
|
await this._restorePageLoadTimeout();
|
||
|
await this._restoreDialogHandler();
|
||
|
const preserveUrl = this.role.opts.preserveUrl;
|
||
|
const redirectUrl = preserveUrl
|
||
|
? this.role.redirectUrl
|
||
|
: this.role.redirectUrl[this.testRun.test.id];
|
||
|
await this._restorePage(redirectUrl, stateSnapshot);
|
||
|
if (!preserveUrl)
|
||
|
await this._restoreWorkingFrame();
|
||
|
}
|
||
|
catch (err) {
|
||
|
err.callsite = callsite;
|
||
|
throw err;
|
||
|
}
|
||
|
this._setPhase(prevPhase);
|
||
|
}
|
||
|
}
|
||
|
exports.default = TestRunBookmark;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1ydW4vYm9va21hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBK0M7QUFDL0MsMkNBQWtEO0FBQ2xELDZEQUF3RTtBQUV4RSxnREFNNEI7QUFFNUIsaURBQStGO0FBSS9GLG9FQUFzRTtBQUt0RSxNQUFxQixlQUFlO0lBWWhDLFlBQW9CLE9BQWdCLEVBQUUsSUFBVTtRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFXLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFjLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFlLHdDQUFrQixDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLEdBQWUsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQVEsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUssSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUksSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQWEsb0NBQW1CLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQXlDLENBQUM7SUFDbEYs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
|