test
Some checks failed
test / Run tests (push) Failing after 6s
build / Build (push) Failing after 9s
Some checks failed
test / Run tests (push) Failing after 6s
build / Build (push) Failing after 9s
This commit is contained in:
@ -1,2 +0,0 @@
|
||||
// <root>/__mocks__/webextension-polyfill.ts
|
||||
export { fakeBrowser as default } from "@webext-core/fake-browser";
|
55
tests/utils.test.ts
Normal file
55
tests/utils.test.ts
Normal file
@ -0,0 +1,55 @@
|
||||
import { describe, expect, it, vitest } from "vitest";
|
||||
import { initTestEnv, initTestGMApi } from "./utils";
|
||||
import GMApi from "@App/runtime/content/gm_api";
|
||||
import { randomUUID } from "crypto";
|
||||
import { newMockXhr } from "mock-xmlhttprequest";
|
||||
import { Script, ScriptDAO } from "@App/app/repo/scripts";
|
||||
|
||||
initTestEnv();
|
||||
|
||||
describe("测试GMApi环境", async () => {
|
||||
const msg = initTestGMApi();
|
||||
const script: Script = {
|
||||
uuid: randomUUID(),
|
||||
name: "test",
|
||||
metadata: {
|
||||
grant: [
|
||||
// gm xhr
|
||||
"GM_xmlhttpRequest",
|
||||
],
|
||||
connect: ["example.com"],
|
||||
},
|
||||
namespace: "",
|
||||
type: 1,
|
||||
status: 1,
|
||||
sort: 0,
|
||||
runStatus: "running",
|
||||
createtime: 0,
|
||||
checktime: 0,
|
||||
};
|
||||
await new ScriptDAO().save(script);
|
||||
const gmApi = new GMApi(msg);
|
||||
//@ts-ignore
|
||||
gmApi.scriptRes = {
|
||||
uuid: script.uuid,
|
||||
};
|
||||
const mockXhr = newMockXhr();
|
||||
mockXhr.onSend = async (request) => {
|
||||
return request.respond(200, {}, "example");
|
||||
};
|
||||
global.XMLHttpRequest = mockXhr;
|
||||
it("test GM xhr", async () => {
|
||||
const onload = vitest.fn();
|
||||
await new Promise((resolve) => {
|
||||
gmApi.GM_xmlhttpRequest({
|
||||
url: "https://scriptcat.org/zh-CN",
|
||||
onload: (res) => {
|
||||
console.log(res);
|
||||
resolve(res);
|
||||
onload(res);
|
||||
},
|
||||
});
|
||||
});
|
||||
expect(onload).toBeCalled();
|
||||
});
|
||||
});
|
@ -3,8 +3,15 @@ import LoggerCore from "@App/app/logger/core";
|
||||
import DBWriter from "@App/app/logger/db_writer";
|
||||
import migrate from "@App/app/migrate";
|
||||
import { LoggerDAO } from "@App/app/repo/logger";
|
||||
import { MockMessage } from "@Packages/message/mock_message";
|
||||
import { Message, Server } from "@Packages/message/server";
|
||||
import { MessageQueue } from "@Packages/message/message_queue";
|
||||
import { ValueService } from "@App/app/service/service_worker/value";
|
||||
import GMApi from "@App/app/service/service_worker/gm_api";
|
||||
import OffscreenGMApi from "@App/app/service/offscreen/gm_api";
|
||||
import EventEmitter from "eventemitter3";
|
||||
|
||||
export default function initTestEnv() {
|
||||
export function initTestEnv() {
|
||||
// @ts-ignore
|
||||
if (global.initTest) {
|
||||
return;
|
||||
@ -42,3 +49,27 @@ export default function initTestEnv() {
|
||||
});
|
||||
logger.logger().debug("test start");
|
||||
}
|
||||
|
||||
export function initTestGMApi(): Message {
|
||||
const wsEE = new EventEmitter();
|
||||
const wsMessage = new MockMessage(wsEE);
|
||||
const osEE = new EventEmitter();
|
||||
const osMessage = new MockMessage(osEE);
|
||||
|
||||
const serviceWorkerServer = new Server(wsMessage);
|
||||
const mq = new MessageQueue(serviceWorkerServer);
|
||||
const valueService = new ValueService(serviceWorkerServer.group("value"), mq);
|
||||
const swGMApi = new GMApi(serviceWorkerServer.group("runtime"), osMessage, valueService);
|
||||
|
||||
valueService.init();
|
||||
swGMApi.start();
|
||||
|
||||
// offscreen
|
||||
const offscreenServer = new Server(osMessage);
|
||||
const osGMApi = new OffscreenGMApi(offscreenServer.group("gmApi"));
|
||||
osGMApi.init();
|
||||
|
||||
return wsMessage;
|
||||
}
|
||||
|
||||
export function initTestOffscreen() {}
|
||||
|
@ -1,3 +1,3 @@
|
||||
import { vi } from "vitest";
|
||||
import chromeMock from "@Packages/chrome-extension-mock";
|
||||
|
||||
vi.mock("webextension-polyfill");
|
||||
chromeMock.init();
|
||||
|
Reference in New Issue
Block a user