// npm 패키지
@aledan007/tester
AI-powered autonomous web testing engine — discover, test, and report on any website
주간
36
월간
976
버전
8
메인테이너
1
라이선스
MIT
최초 publish
2026-04-21
publisher
aledan007
tarball
35,931,979 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2026-05-16
// offending code· @0.4.5· no static-pattern hits
llm: benign · 0.85→ 의심 전송지 없음, 원격 실행 형태 없음 — 1 known-vendor host(s).
- @0.4.5··AUTO-PUBLISHED·publisher: aledan007heuristic 75/100static flags 0llm benign (0.85) via ollamanew-publisher:10dosv-flagged:MAL-2026-4360
→ 의심 전송지 없음, 원격 실행 형태 없음 — 1 known-vendor host(s).
// offending code· no static-pattern hits
--- install scripts --- ### prepublishOnly npm run build --- package.json (entry) --- { "name": "@aledan007/tester", "version": "0.4.5", "description": "AI-powered autonomous web testing engine — discover, test, and report on any website", "main": "dist/index.js", "module": "dist/index.mjs", "types": "dist/index.d.ts", "exports": { ".": { "types": "./dist/index.d.ts", "import": "./dist/index.mjs", "require": "./dist/index.js" }, "./self-test": { "types": "./dist/self-test/harness.d.ts", "import": "./dist/self-test/harness.mjs", "require": "./dist/self-test/harness.js" } }, "bin": { "tester": "dist/cli/index.js" }, "files": [ "dist", "journey-audit/configs", "journey-audit/README.md" ], "scripts": { "build": "tsup", "dev": "tsup --watch", "test": "vitest run", "test:watch": "vitest", "typecheck": "tsc --noEmit", "lint": "tsc --noEmit", "server": "tsx src/server/index.ts", "start:server": "node dist/server/index.js", "docs:build": "node scripts/build-docs.mjs", "docs:serve": "node scripts/build-docs.mjs && npx --yes http-server docs-build -p 4173", "self-audit": "npx playwright test --config self-audit/playwright.config.ts", "se --- index.js (entry) --- "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in nod --- bundled output (OSV-MAL flagged — LLM scope expansion) --- --- dist/index.d.ts (bundled) --- import * as puppeteer from 'puppeteer'; import * as playwright from 'playwright'; /** * Core Types for AI Tester * All shared TypeScript types for the autonomous web testing engine. */ interface TesterConfig { /** Run browser in headless mode (default: true) */ headless?: boolean; /** Viewport width (default: 1280) */ viewportWidth?: number; /** Viewport height (default: 800) */ viewportHeight?: number; /** Maximum pages to crawl (default: 50) */ maxPages?: number; /** Maximum crawl depth from seed URL (default: 3) */ maxDepth?: number; /** Crawl timeout in ms (default: 120_000) */ crawlTimeout?: number; /** Login credentials */ credentials?: LoginCredentials; /** Callback invoked when MFA screen is detected */ mfaHandler?: MfaHandler; /** File path to save/load session cookies */ sessionPath?: string; /** Anthropic API key for scenario generation + element finder */ anthropicApiKey?: string; /** AI model to use (default: claude-sonnet-4-5-20250929) */ aiModel?: string; /** Take screenshot on test errors (default: true) */ screenshotOnError?: boolean; /** Take screenshot on every step (default: false) */ screenshotEveryStep?: boolean; /** Per-step timeout in ms (default: 10_000) */ stepTimeout?: number; /** Domain lock — only navigate to these domains */ allowedDomains?: string[]; /** URL patterns to skip during crawl (e.g., /logout, /delete) */ excludePatterns?: string[]; /** Enable visual regression testing (default: true) */ visualRegression?: boolean; /** Enable accessibility testing (default: true) */ accessibility?: boolean; /** Enable performance testing (default: true) */ performance?: boolean; /** Number of scenarios to run concurrently (default: 1 = sequential) */ concurrency?: number; /** Directory to save video recordings (default: disabled) */ videoDir?: string; /** T-007 — Max nu --- dist/index.js (bundled) --- "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/assertions/dom.ts var dom_exports = {}; __export(dom_exports, { auditHydrationAndCSP: () => auditHydrationAndCSP, auditLoadTiming: () => auditLoadTiming, runDomAssertion: () => runDomAssertion }); async function runDomAssertion(page, assertion) { try { switch (assertion.type) { case "element_exists": --- dist/index.mjs (bundled) --- var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x + '" is not supported'); }); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require2() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", --- dist/server/index.js (bundled) --- "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/assertions/dom.ts var dom_exports = {}; __export(dom_exports, { auditHydrationAndCSP: () => auditHydrationAndCSP, auditLoadTiming: () => auditLoadTiming, runDomAssertion: () => runDomAssertion }); async function runDomAssertion(page, assertion) { try { switch (assertion.type) { case "element_exists": { const exi
