WeKnora deployment source with the reviewed wiki identity, summary and recovery fixes
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import { chromium } from 'playwright-core'
|
||||
const b = await chromium.launch({ executablePath: process.env.HOME + '/Library/Caches/ms-playwright/chromium-1161/chrome-mac/Chromium.app/Contents/MacOS/Chromium' })
|
||||
const q = await b.newPage()
|
||||
|
||||
const geom = (page) => page.evaluate(() => {
|
||||
const g = (s) => { const e = document.querySelector(s); if (!e) return null; const r = e.getBoundingClientRect(); return [Math.round(r.left), Math.round(r.right)] }
|
||||
return { logo: g('.VPNavBarTitle'), search: g('.VPNavBarSearch button, .VPNavBarSearch .DocSearch-Button'), menu: g('.VPNavBarMenu'), sidebarItem: g('.VPSidebarItem .link .text') }
|
||||
})
|
||||
|
||||
const scanLine = async (page, label) => {
|
||||
const buf = await page.screenshot({ clip: { x: 0, y: 58, width: 1680, height: 20 } })
|
||||
const url = 'data:image/png;base64,' + buf.toString('base64')
|
||||
const hits = await q.evaluate(async (u) => {
|
||||
const img = new Image(); img.src = u; await img.decode()
|
||||
const c = document.createElement('canvas'); c.width = img.width; c.height = img.height
|
||||
const ctx = c.getContext('2d'); ctx.drawImage(img, 0, 0)
|
||||
const res = []
|
||||
for (const x of [60, 200, 400, 800, 1200, 1560, 1660]) {
|
||||
for (let y = 0; y < img.height; y++) {
|
||||
const d = ctx.getImageData(x, y, 1, 1).data
|
||||
if (d[0] < 248) res.push(`x${x} y${y + 58} ${d[0]},${d[1]},${d[2]}`)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}, url)
|
||||
console.log(' line@' + label, hits.length ? hits.join(' | ') : 'none')
|
||||
}
|
||||
|
||||
for (const w of [1440, 1680, 1920]) {
|
||||
for (const [name, path] of [['landing', '/'], ['doc ', '/03-features/07-agent']]) {
|
||||
const p = await b.newPage({ viewport: { width: w, height: 900 }, deviceScaleFactor: 1 })
|
||||
await p.goto('http://localhost:3011' + path, { waitUntil: 'networkidle' })
|
||||
await p.waitForTimeout(800)
|
||||
console.log(w, name, JSON.stringify(await geom(p)))
|
||||
await p.evaluate(() => window.scrollTo({ top: 1200, behavior: 'instant' }))
|
||||
await p.waitForTimeout(600)
|
||||
if (w === 1680) await scanLine(p, name.trim())
|
||||
await p.close()
|
||||
}
|
||||
}
|
||||
const s = await b.newPage({ viewport: { width: 1680, height: 900 }, deviceScaleFactor: 2 })
|
||||
for (const [name, path] of [['landing', '/'], ['doc', '/03-features/07-agent']]) {
|
||||
await s.goto('http://localhost:3011' + path, { waitUntil: 'networkidle' })
|
||||
await s.waitForTimeout(800)
|
||||
await s.evaluate(() => window.scrollTo({ top: 900, behavior: 'instant' }))
|
||||
await s.waitForTimeout(600)
|
||||
await s.screenshot({ path: `.shots/nav-${name}.png`, clip: { x: 0, y: 0, width: 1680, height: 120 } })
|
||||
}
|
||||
await b.close()
|
||||
Reference in New Issue
Block a user