viberadar 0.3.175 → 0.3.177
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/probe/runner.d.ts.map +1 -1
- package/dist/probe/runner.js +66 -1
- package/dist/probe/runner.js.map +1 -1
- package/dist/probe/types.d.ts +4 -1
- package/dist/probe/types.d.ts.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +61 -27
- package/dist/server/index.js.map +1 -1
- package/dist/ui/dashboard.html +67 -28
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/probe/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/probe/runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAsC,cAAc,EAAE,MAAM,SAAS,CAAC;AAoL1F,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAqBjF"}
|
package/dist/probe/runner.js
CHANGED
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.runProbeChecks = runProbeChecks;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
+
const child_process = __importStar(require("child_process"));
|
|
39
40
|
const module_1 = require("module");
|
|
40
41
|
const SCREENSHOTS_DIR = path.join(process.cwd(), '.viberadar', 'probe-screenshots');
|
|
41
42
|
function ensureScreenshotsDir() {
|
|
@@ -94,12 +95,76 @@ async function executeStep(page, step, target, timeout) {
|
|
|
94
95
|
throw new Error(`Unknown step type: ${type}`);
|
|
95
96
|
}
|
|
96
97
|
}
|
|
98
|
+
function findPlaywrightConfig(filePath) {
|
|
99
|
+
let dir = path.dirname(filePath);
|
|
100
|
+
for (let i = 0; i < 8; i++) {
|
|
101
|
+
for (const name of ['playwright.config.ts', 'playwright.config.js']) {
|
|
102
|
+
const candidate = path.join(dir, name);
|
|
103
|
+
if (fs.existsSync(candidate))
|
|
104
|
+
return { configFile: candidate, projectRoot: dir };
|
|
105
|
+
}
|
|
106
|
+
const parent = path.dirname(dir);
|
|
107
|
+
if (parent === dir)
|
|
108
|
+
break;
|
|
109
|
+
dir = parent;
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
async function runPlaywrightFile(check, target, timeout, config) {
|
|
114
|
+
const start = Date.now();
|
|
115
|
+
const filePath = path.resolve(process.cwd(), check.file);
|
|
116
|
+
if (!fs.existsSync(filePath)) {
|
|
117
|
+
return { check: check.name, status: 'failed', durationMs: 0, error: `File not found: ${filePath}` };
|
|
118
|
+
}
|
|
119
|
+
const pwConfig = findPlaywrightConfig(filePath);
|
|
120
|
+
const configArgs = pwConfig ? ['--config', pwConfig.configFile] : [];
|
|
121
|
+
const runCwd = pwConfig ? pwConfig.projectRoot : process.cwd();
|
|
122
|
+
return new Promise(resolve => {
|
|
123
|
+
const env = {
|
|
124
|
+
...process.env,
|
|
125
|
+
BASE_URL: target,
|
|
126
|
+
PLAYWRIGHT_BASE_URL: target,
|
|
127
|
+
PLAYWRIGHT_USE_WEBSERVER: '0',
|
|
128
|
+
PLAYWRIGHT_BROWSERS: 'chromium',
|
|
129
|
+
};
|
|
130
|
+
if (config.e2eEmail) {
|
|
131
|
+
env.E2E_USER_EMAIL = config.e2eEmail;
|
|
132
|
+
env.E2E_EMAIL = config.e2eEmail;
|
|
133
|
+
}
|
|
134
|
+
if (config.e2ePassword) {
|
|
135
|
+
env.E2E_USER_PASSWORD = config.e2ePassword;
|
|
136
|
+
env.E2E_PASSWORD = config.e2ePassword;
|
|
137
|
+
}
|
|
138
|
+
const proc = child_process.spawn('npx', ['playwright', 'test', filePath, '--reporter=line', ...configArgs], {
|
|
139
|
+
env, cwd: runCwd, shell: true, timeout,
|
|
140
|
+
});
|
|
141
|
+
let output = '';
|
|
142
|
+
proc.stdout.on('data', (d) => { output += d.toString(); });
|
|
143
|
+
proc.stderr.on('data', (d) => { output += d.toString(); });
|
|
144
|
+
proc.on('close', code => {
|
|
145
|
+
const passed = code === 0;
|
|
146
|
+
resolve({
|
|
147
|
+
check: check.name,
|
|
148
|
+
status: passed ? 'passed' : 'failed',
|
|
149
|
+
durationMs: Date.now() - start,
|
|
150
|
+
error: passed ? undefined : output.slice(-500),
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
proc.on('error', err => {
|
|
154
|
+
resolve({ check: check.name, status: 'failed', durationMs: Date.now() - start, error: err.message });
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
97
158
|
async function runCheck(browser, check, config) {
|
|
159
|
+
// Run real Playwright test file if specified
|
|
160
|
+
if (check.file) {
|
|
161
|
+
return runPlaywrightFile(check, config.target, config.timeout, config);
|
|
162
|
+
}
|
|
98
163
|
const start = Date.now();
|
|
99
164
|
const context = await browser.newContext();
|
|
100
165
|
const page = await context.newPage();
|
|
101
166
|
try {
|
|
102
|
-
for (const step of check.steps) {
|
|
167
|
+
for (const step of (check.steps || [])) {
|
|
103
168
|
await executeStep(page, step, config.target, config.timeout);
|
|
104
169
|
}
|
|
105
170
|
return {
|
package/dist/probe/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/probe/runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/probe/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/probe/types.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export interface ProbeConfig {
|
|
|
4
4
|
timeout: number;
|
|
5
5
|
notify?: ProbeNotifyConfig;
|
|
6
6
|
checks: ProbeCheck[];
|
|
7
|
+
e2eEmail?: string;
|
|
8
|
+
e2ePassword?: string;
|
|
7
9
|
}
|
|
8
10
|
export interface ProbeNotifyConfig {
|
|
9
11
|
telegram?: {
|
|
@@ -13,7 +15,8 @@ export interface ProbeNotifyConfig {
|
|
|
13
15
|
}
|
|
14
16
|
export interface ProbeCheck {
|
|
15
17
|
name: string;
|
|
16
|
-
steps
|
|
18
|
+
steps?: ProbeStep[];
|
|
19
|
+
file?: string;
|
|
17
20
|
}
|
|
18
21
|
export type ProbeStep = {
|
|
19
22
|
goto: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/probe/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/probe/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAE,UAAU,EAA4H,MAAM,YAAY,CAAC;AAOlK,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAuhED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAE,UAAU,EAA4H,MAAM,YAAY,CAAC;AAOlK,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAuhED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAqwF1G"}
|
package/dist/server/index.js
CHANGED
|
@@ -1877,15 +1877,26 @@ function startServer({ data: initialData, port, projectRoot }) {
|
|
|
1877
1877
|
let probeRunning = false;
|
|
1878
1878
|
let probeTimer = null;
|
|
1879
1879
|
let probeState = { status: 'idle' };
|
|
1880
|
-
function
|
|
1881
|
-
const p = path.join(projectRoot, '.viberadar', 'probe-
|
|
1880
|
+
function loadProbeSettings() {
|
|
1881
|
+
const p = path.join(projectRoot, '.viberadar', 'probe-settings.json');
|
|
1882
1882
|
try {
|
|
1883
1883
|
return JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
1884
1884
|
}
|
|
1885
1885
|
catch {
|
|
1886
|
-
return
|
|
1886
|
+
return {};
|
|
1887
1887
|
}
|
|
1888
1888
|
}
|
|
1889
|
+
function saveProbeSettings(settings) {
|
|
1890
|
+
const dir = path.join(projectRoot, '.viberadar');
|
|
1891
|
+
if (!fs.existsSync(dir))
|
|
1892
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
1893
|
+
fs.writeFileSync(path.join(dir, 'probe-settings.json'), JSON.stringify(settings, null, 2), 'utf-8');
|
|
1894
|
+
}
|
|
1895
|
+
// legacy shim — читаем из нового файла
|
|
1896
|
+
function loadProbeNotifyConfig() {
|
|
1897
|
+
const s = loadProbeSettings();
|
|
1898
|
+
return s.telegram ? { telegram: s.telegram } : undefined;
|
|
1899
|
+
}
|
|
1889
1900
|
async function runProbeOnce() {
|
|
1890
1901
|
if (probeRunning)
|
|
1891
1902
|
return;
|
|
@@ -1894,15 +1905,25 @@ function startServer({ data: initialData, port, projectRoot }) {
|
|
|
1894
1905
|
probeState.status = 'running';
|
|
1895
1906
|
broadcast('probe-run-started', { timestamp: new Date().toISOString() });
|
|
1896
1907
|
try {
|
|
1908
|
+
const settings = loadProbeSettings();
|
|
1897
1909
|
const config = (0, config_1.loadProbeConfig)(path.join(projectRoot, 'probe.config.yml'));
|
|
1898
|
-
|
|
1910
|
+
// settings.target overrides config target; or we can run without a config file
|
|
1911
|
+
if (!config && !settings.target) {
|
|
1912
|
+
process.stdout.write(' ⚠️ Probe: no target configured\n');
|
|
1899
1913
|
probeState.status = prevStatus;
|
|
1900
1914
|
return;
|
|
1901
1915
|
}
|
|
1902
|
-
const
|
|
1903
|
-
if (
|
|
1904
|
-
|
|
1905
|
-
|
|
1916
|
+
const effectiveConfig = config || { target: '', interval: 300, timeout: 30000, checks: [] };
|
|
1917
|
+
if (settings.target)
|
|
1918
|
+
effectiveConfig.target = settings.target;
|
|
1919
|
+
if (settings.telegram)
|
|
1920
|
+
effectiveConfig.notify = { telegram: settings.telegram };
|
|
1921
|
+
if (settings.e2eEmail)
|
|
1922
|
+
effectiveConfig.e2eEmail = settings.e2eEmail;
|
|
1923
|
+
if (settings.e2ePassword)
|
|
1924
|
+
effectiveConfig.e2ePassword = settings.e2ePassword;
|
|
1925
|
+
const notifyCfg = effectiveConfig.notify;
|
|
1926
|
+
const report = await (0, runner_1.runProbeChecks)(effectiveConfig);
|
|
1906
1927
|
probeState.lastRun = report;
|
|
1907
1928
|
probeState.status = probeTimer ? 'scheduled' : 'idle';
|
|
1908
1929
|
broadcast('probe-run-done', report);
|
|
@@ -4854,9 +4875,11 @@ a{color:var(--blue)}
|
|
|
4854
4875
|
// --- Probe API ---
|
|
4855
4876
|
if (url === '/api/probe/status' && req.method === 'GET') {
|
|
4856
4877
|
const config = (0, config_1.loadProbeConfig)(path.join(projectRoot, 'probe.config.yml'));
|
|
4857
|
-
const
|
|
4878
|
+
const settings = loadProbeSettings();
|
|
4879
|
+
const effectiveTarget = settings.target || (config ? config.target : null);
|
|
4880
|
+
const checks = config ? config.checks.map(c => ({ name: c.name, type: c.file ? 'file' : 'dsl', steps: c.steps?.length ?? 0 })) : null;
|
|
4858
4881
|
res.writeHead(200, jsonH);
|
|
4859
|
-
res.end(JSON.stringify({ ...probeState, checks, configFound: !!config }));
|
|
4882
|
+
res.end(JSON.stringify({ ...probeState, checks, configFound: !!config, effectiveTarget }));
|
|
4860
4883
|
return;
|
|
4861
4884
|
}
|
|
4862
4885
|
if (url === '/api/probe/run' && req.method === 'POST') {
|
|
@@ -4912,31 +4935,42 @@ a{color:var(--blue)}
|
|
|
4912
4935
|
res.end(JSON.stringify({ ok: true }));
|
|
4913
4936
|
return;
|
|
4914
4937
|
}
|
|
4915
|
-
if (url === '/api/probe/
|
|
4916
|
-
const
|
|
4917
|
-
const masked =
|
|
4918
|
-
botToken:
|
|
4919
|
-
chatId:
|
|
4938
|
+
if (url === '/api/probe/settings' && req.method === 'GET') {
|
|
4939
|
+
const s = loadProbeSettings();
|
|
4940
|
+
const masked = s.telegram ? {
|
|
4941
|
+
botToken: s.telegram.botToken ? s.telegram.botToken.slice(0, 8) + '••••••••' : '',
|
|
4942
|
+
chatId: s.telegram.chatId || '',
|
|
4920
4943
|
} : null;
|
|
4921
4944
|
res.writeHead(200, jsonH);
|
|
4922
|
-
res.end(JSON.stringify({
|
|
4945
|
+
res.end(JSON.stringify({
|
|
4946
|
+
target: s.target || '',
|
|
4947
|
+
telegram: masked,
|
|
4948
|
+
e2eEmail: s.e2eEmail || '',
|
|
4949
|
+
e2ePasswordSet: !!s.e2ePassword,
|
|
4950
|
+
}));
|
|
4923
4951
|
return;
|
|
4924
4952
|
}
|
|
4925
|
-
if (url === '/api/probe/
|
|
4953
|
+
if (url === '/api/probe/settings' && req.method === 'POST') {
|
|
4926
4954
|
let body = '';
|
|
4927
4955
|
req.on('data', (d) => { body += d; });
|
|
4928
4956
|
req.on('end', () => {
|
|
4929
4957
|
try {
|
|
4930
|
-
const { botToken, chatId } = JSON.parse(body);
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
if (
|
|
4938
|
-
|
|
4939
|
-
|
|
4958
|
+
const { target, botToken, chatId, e2eEmail, e2ePassword } = JSON.parse(body);
|
|
4959
|
+
const current = loadProbeSettings();
|
|
4960
|
+
const updated = { ...current };
|
|
4961
|
+
if (target !== undefined)
|
|
4962
|
+
updated.target = target || undefined;
|
|
4963
|
+
if (botToken && chatId)
|
|
4964
|
+
updated.telegram = { botToken, chatId };
|
|
4965
|
+
else if (botToken === '' && chatId === '')
|
|
4966
|
+
delete updated.telegram;
|
|
4967
|
+
if (e2eEmail !== undefined)
|
|
4968
|
+
updated.e2eEmail = e2eEmail || undefined;
|
|
4969
|
+
if (e2ePassword)
|
|
4970
|
+
updated.e2ePassword = e2ePassword;
|
|
4971
|
+
else if (e2ePassword === '')
|
|
4972
|
+
delete updated.e2ePassword;
|
|
4973
|
+
saveProbeSettings(updated);
|
|
4940
4974
|
res.writeHead(200, jsonH);
|
|
4941
4975
|
res.end(JSON.stringify({ ok: true }));
|
|
4942
4976
|
}
|