Path: blob/main/plugins/execute-js/test/dependencies.test.ts
2581 views
import { Agent, LocationStatus } from 'secret-agent';1import { Helpers } from '@secret-agent/testing';2import { ITestKoaServer } from '@secret-agent/testing/helpers';3import ExecuteJsPlugin from '@secret-agent/execute-js-plugin';4import Core from '@secret-agent/core';5import ConnectionToClient from '@secret-agent/core/server/ConnectionToClient';6import CoreServer from '@secret-agent/core/server';78let koaServer: ITestKoaServer;9let connectionToClient: ConnectionToClient;10let coreServer;11beforeAll(async () => {12coreServer = new CoreServer();13await coreServer.listen({ port: 0 });14koaServer = await Helpers.runKoaServer();15connectionToClient = Core.addConnection();16Helpers.onClose(() => {17connectionToClient.disconnect();18koaServer.close();19coreServer.close();20}, true);21});2223afterAll(Helpers.afterAll);24afterEach(Helpers.afterEach);2526test('it should work even if dependency not registered through Core.use', async () => {27koaServer.get('/test2', ctx => {28ctx.body = `<body>29<script>30window.testRun = function() {31return 'ItWorks';32}33</script>34</body>`;35});3637const userAgent =38'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.165 Safari/537.36';39const agent = new Agent({40userAgent,41connectionToCore: {42host: await coreServer.address,43},44});45Helpers.onClose(() => agent.close(), true);46agent.use(ExecuteJsPlugin);4748await agent.goto(`${koaServer.baseUrl}/test2`);49await agent.activeTab.waitForLoad(LocationStatus.DomContentLoaded);50const response = await agent.executeJs(() => {51// @ts-ignore52return window.testRun();53});54expect(response).toEqual('ItWorks');55await agent.close();56});5758test('it should fail if dependency not registered and allowDynamicPluginLoading = false', async () => {59koaServer.get('/test2', ctx => {60ctx.body = `<body>61<script>62window.testRun = function() {63return 'ItWorks';64}65</script>66</body>`;67});6869Core.allowDynamicPluginLoading = false;70const userAgent =71'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.165 Safari/537.36';72const agent = new Agent({73userAgent,74connectionToCore: {75host: await coreServer.address,76},77});78Helpers.onClose(() => agent.close(), true);79agent.use(ExecuteJsPlugin);8081await agent.goto(`${koaServer.baseUrl}/test2`);82await agent.activeTab.waitForLoad(LocationStatus.DomContentLoaded);83const response = await agent.executeJs(() => {84// @ts-ignore85return window.testRun();86});87expect(response).toEqual(undefined);88await agent.close();89});909192