日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

OpenHuman 桌面端 E2E 測(cè)試實(shí)戰(zhàn)指南:WDIO + Appium Chromium 驅(qū)動(dòng) Tauri 應(yīng)用的完整方案

OpenHuman 桌面端 E2E 測(cè)試實(shí)戰(zhàn)指南:WDIO + Appium Chromium 驅(qū)動(dòng) Tauri 應(yīng)用的完整方案 OpenHuman 桌面端 E2E 測(cè)試實(shí)戰(zhàn)指南WDIO Appium Chromium 驅(qū)動(dòng) Tauri 應(yīng)用的完整方案【免費(fèi)下載鏈接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/op/openhuman本篇指南系統(tǒng)講解 OpenHuman 桌面應(yīng)用端到端E2E測(cè)試的完整技術(shù)方案從 WebDriverIOWDIO驅(qū)動(dòng) Tauri 應(yīng)用的基礎(chǔ)架構(gòu)、跨平臺(tái)元素定位策略、穩(wěn)定data-testid規(guī)范、深度鏈接deep link注入到環(huán)境變量矩陣、CI 工作流、Mock 后端隔離與故障排查并延伸至 Agent 可觀測(cè)的產(chǎn)物捕獲層與 Rust 推理 Provider 的 wiremock E2E。讀者讀完可掌握在 Linux/macOS/Windows 三平臺(tái)搭建并維護(hù)一套可復(fù)現(xiàn)、可調(diào)試的桌面 E2E 測(cè)試體系且能直接對(duì)照倉(cāng)庫(kù)源碼驗(yàn)證每個(gè)環(huán)節(jié)的底層實(shí)現(xiàn)。總覽E2E 測(cè)試的定位與技術(shù)選型OpenHuman 的桌面 E2E 測(cè)試使用WebDriverIOWDIO作為測(cè)試運(yùn)行器通過(guò) Appium 驅(qū)動(dòng) Tauri 應(yīng)用。依據(jù) gitbooks/developing/e2e-testing.md 文檔當(dāng)前矩陣如下平臺(tái)Driver端口應(yīng)用格式選擇器Linux / Appium ChromiumAppium Chromium4723Debug 二進(jìn)制CSS / DOMmacOS / Appium ChromiumAppium Chromium4723.appbundleCSS / DOME2E 測(cè)試在項(xiàng)目中的定位是最外層、最接近真實(shí)用戶(hù)的驗(yàn)證手段它以完整構(gòu)建出的桌面應(yīng)用為載體驅(qū)動(dòng)真實(shí) WebView驗(yàn)證登錄、引導(dǎo)onboarding、消息、Cron 任務(wù)、技能Skills、設(shè)置面板、支付等跨前后端鏈路的端到端行為。它與 Rust 單元/集成測(cè)試、Playwright Web 測(cè)試共同構(gòu)成 OpenHuman 的分層測(cè)試體系可參考 gitbooks/developing/testing-strategy.md。關(guān)于驅(qū)動(dòng)后端的演進(jìn)說(shuō)明文檔描述 OpenHuman 桌面應(yīng)用使用 CEF 運(yùn)行時(shí)tauri-runtime-cefCI 以 Appium Chromium 驅(qū)動(dòng) Linux debug 二進(jìn)制macOS/Windows 手動(dòng) E2E 使用同一 Chromium 后端。從當(dāng)前倉(cāng)庫(kù)源碼看app/test/wdio.conf.ts 與 app/scripts/e2e-run-session.sh 的注釋顯示應(yīng)用已隨 #5456 遷移至 WryWebKit運(yùn)行時(shí)#5478 移除了基于 CEF CDP 端口的 Appium Chromium 后端CDP 僅存在于 Chromium 引擎下當(dāng)前 Linux 驅(qū)動(dòng)路徑為tauri-driverE2E_USE_TAURI_DRIVER1時(shí)啟用e2e-run-session.sh。.github/workflows/e2e-reusable.yml 中仍保留 Appium appium-chromium-driver的安裝與緩存步驟。下文以文檔所述方案為主干同時(shí)標(biāo)注當(dāng)前源碼實(shí)現(xiàn)狀態(tài)以便讀者對(duì)照實(shí)際代碼??焖匍_(kāi)始本地跑通第一組 E2ELinux / Appium Chromium# 安裝 Appium 與 Chromium driver一次性 npm install -g appium3 appium driver install --sourcenpm appium-chromium-driver # 構(gòu)建 E2E 應(yīng)用 pnpm --filter openhuman-app test:e2e:build # 運(yùn)行全部 flows pnpm --filter openhuman-app test:e2e:all:flows # 運(yùn)行單個(gè) spec bash app/scripts/e2e-run-spec.sh test/e2e/specs/smoke.spec.ts smoke在無(wú)頭 Linux 環(huán)境下harness 通過(guò)Xvfb提供虛擬顯示見(jiàn)下文故障排查。macOS / Appium Chromium# 安裝 Appium Chromium driver一次性需要 Node 24 npm install -g appium3 appium driver install --sourcenpm appium-chromium-driver # 構(gòu)建 .app bundle pnpm --filter openhuman-app test:e2e:build # 運(yùn)行全部 flows pnpm --filter openhuman-app test:e2e:all:flows在 macOS 上用 Docker 跑 Linux harness在 macOS 上通過(guò) Docker 運(yùn)行與 CI 一致的 Linux E2E harness需要 Docker Desktop 或 Colima。倉(cāng)庫(kù)以 bind-mount 方式掛載構(gòu)建產(chǎn)物在多次運(yùn)行間持久保留。# 構(gòu)建 運(yùn)行全部 E2E flows docker compose -f e2e/docker-compose.yml run --rm e2e # 先構(gòu)建應(yīng)用如需 docker compose -f e2e/docker-compose.yml run --rm e2e \ pnpm --filter openhuman-app test:e2e:build # 運(yùn)行單個(gè) spec docker compose -f e2e/docker-compose.yml run --rm e2e \ bash app/scripts/e2e-run-spec.sh test/e2e/specs/smoke.spec.ts smokepackage.json 中的 E2E 腳本矩陣app/package.json 中定義了完整的 E2E 腳本入口可作為日常操作的速查表腳本作用test:e2e:build執(zhí)行bash ./scripts/e2e-build.sh構(gòu)建 E2E 應(yīng)用test:e2e:web構(gòu)建 Web 版并運(yùn)行e2e-web-session.shtest:e2e:mega構(gòu)建后運(yùn)行mega-flow.spec.ts全流程test:e2e:login/test:e2e:auth登錄 / 認(rèn)證專(zhuān)項(xiàng)腳本test:e2e:skills-registry運(yùn)行 Skills 注冊(cè)表 spectest:e2e:cron-jobs運(yùn)行 Cron 任務(wù) spectest:e2e:all:flows運(yùn)行e2e-run-all-flows.sh全量 spec 套件test:e2e:session運(yùn)行e2e-run-session.sh統(tǒng)一會(huì)話運(yùn)行器test:e2e:session:full先構(gòu)建再運(yùn)行完整會(huì)話test:all覆蓋率 Rust E2E 全量回歸入口架構(gòu)統(tǒng)一的后端與分層輔助層平臺(tái)檢測(cè)Platform detectionapp/test/e2e/helpers/platform.ts 導(dǎo)出平臺(tái)檢測(cè)函數(shù)。當(dāng)前統(tǒng)一到 Chromium driver 后這些函數(shù)作為 shim 保留始終走 DOM 能力路徑isTauriDriver()遺留 shim現(xiàn)在始終返回true——統(tǒng)一的 Chromium 會(huì)話暴露 WebView DOM與舊 tauri-driver 路徑一致supportsExecuteScript()始終返回true——Chromium driver 是全功能 W3C WebDriver在所有平臺(tái)支持browser.execute()isMac2()遺留 shim現(xiàn)在始終返回false——舊的 Appium Mac2可訪問(wèn)性樹(shù)路徑已被統(tǒng)一后端取代。這意味著此前寫(xiě)在if (isTauriDriver())分支里的 DOM 操作現(xiàn)在在每個(gè)平臺(tái)都會(huì)執(zhí)行spec 無(wú)需再做平臺(tái)分支。元素輔助層Element helpersapp/test/e2e/helpers/element-helpers.ts 提供跨平臺(tái)統(tǒng)一 API封裝了兩種后端的差異Mac2 走可訪問(wèn)性樹(shù) XPathtauri-driver 走 DOM XPathHelperAppium Chromium 下的實(shí)現(xiàn)waitForText(text)對(duì) DOM 文本內(nèi)容做 XPath 匹配waitForButton(text)button/[rolebutton]的 XPathclickText(text)標(biāo)準(zhǔn)el.click()clickNativeButton(text)在 button 上執(zhí)行標(biāo)準(zhǔn)el.click()clickToggle()[roleswitch]/input[typecheckbox]waitForWindowVisible()窗口句柄檢查waitForWebView()document.readyState檢查hasAppChrome()窗口句柄檢查dumpAccessibilityTree()HTML 頁(yè)面源碼源碼中還有幾個(gè)值得注意的細(xì)節(jié)waitForTestId(testId)/clickTestId(testId)通過(guò)[data-testid...]定位元素當(dāng)前僅在 DOM 能力后端可用element-helpers.tsclickAtElement()在 DOM 后端優(yōu)先使用browser.execute(e e.click())注入式點(diǎn)擊繞開(kāi) WebDriver 點(diǎn)擊常見(jiàn)的element not interactable / click intercepted錯(cuò)誤并先scrollIntoView避免 webkit2gtk 不自動(dòng)滾動(dòng)的問(wèn)題element-helpers.tstextExists()與visibleTextExists()是非阻塞檢查——后者額外要求isDisplayed()為真用于排除折疊的處理轉(zhuǎn)錄processing transcript中殘留文本的干擾element-helpers.ts。穩(wěn)定測(cè)試 IDStable test IDs對(duì)于 E2E spec 需要點(diǎn)擊或輪詢(xún)的 UI 控件優(yōu)先提供穩(wěn)定的data-testid命名遵循surface-element-id?分類(lèi)法。文檔給出的實(shí)際范例cron-jobs-panel、cron-refreshcron-job-row-jobId、cron-job-toggle-jobId、cron-job-run-jobId、cron-job-view-runs-jobId、cron-job-remove-jobIdsettings-nav-routeIdskill-row-skillId、skill-install-skillId、skill-uninstall-skillIdthread-row-threadId、new-thread-button、send-message-buttononboarding-next-button當(dāng) spec 針對(duì)這類(lèi) hook 時(shí)應(yīng)使用waitForTestId(testId)/clickTestId(testId)文本選擇器只用于用戶(hù)可見(jiàn)文案的斷言不做行/動(dòng)作的發(fā)現(xiàn)定位——這樣可顯著降低 UI 文案變動(dòng)導(dǎo)致的用例脆弱性。深度鏈接輔助層Deep link helpersapp/test/e2e/helpers/deep-link-helpers.ts 處理認(rèn)證類(lèi)深度鏈接如openhuman://auth?token...keyauth策略?xún)?yōu)先級(jí)WebView 內(nèi)window.__simulateDeepLink(url)通過(guò)browser.execute()注入當(dāng)前統(tǒng)一后端在所有平臺(tái)均可用是最可靠的主路徑源碼中會(huì)先探測(cè)__simulateDeepLink是否就緒最長(zhǎng)輪詢(xún) 25 秒macOS 擴(kuò)展命令macos: launchAppmacos: deepLink保留給需要系統(tǒng) Launch Services 分發(fā) URL scheme 的 macOS shell-out 場(chǎng)景重試 3 次macOS shell 回退open -a ... url。源碼對(duì) Linux 做了明確約束Linux 容器沒(méi)有注冊(cè)openhuman://scheme 的.desktop文件xdg-open無(wú)法分發(fā) URL因此 WebView simulate 失敗時(shí)直接拋出異常而不是無(wú)意義地嘗試 shell 回退deep-link-helpers.ts。此外該文件還實(shí)現(xiàn)了JWT bypass 認(rèn)證buildBypassJwt(userId)構(gòu)造一個(gè)alg: none的三段式 JWTheader.payload.e2e簽名段僅保留格式前端解碼不校驗(yàn)簽名triggerAuthDeepLink(token)支持OPENHUMAN_E2E_AUTH_BYPASS_TOKEN與OPENHUMAN_E2E_AUTH_BYPASS1配合OPENHUMAN_E2E_AUTH_BYPASS_USER_ID兩條旁路路徑觸發(fā)認(rèn)證深鏈前會(huì)先內(nèi)聯(lián)關(guān)閉 BootCheckGateChoose core mode 彈窗避免認(rèn)證就緒等待被 gate 卡死。發(fā)布候選的手工二次實(shí)例冒煙文檔明確要求當(dāng)改動(dòng)涉及 CEF preflight、單實(shí)例single-instance或深鏈啟動(dòng)代碼時(shí)在 Linux 或 macOS 上手工做一次二次實(shí)例冒煙正常啟動(dòng) OpenHuman 并保持運(yùn)行通過(guò)系統(tǒng) opener 觸發(fā)openhuman://auth?tokene2e-tokenkeyauth確認(rèn)已在運(yùn)行的窗口收到回調(diào)且不會(huì)啟動(dòng)第二個(gè)完整 CEF 實(shí)例確認(rèn)二次進(jìn)程干凈退出無(wú) CEF cache-lock 錯(cuò)誤。該流程專(zhuān)門(mén)捕獲二次進(jìn)程在 Tauri 深鏈轉(zhuǎn)發(fā)路徑安裝前于 CEF 緩存 preflight 階段退出這類(lèi)回歸。編寫(xiě)跨平臺(tái) spec 的六條規(guī)范一律使用 element-helpers.ts 中的 helper嚴(yán)禁在 spec 中使用原始XCUIElementType*選擇器點(diǎn)擊按鈕用clickNativeButton(text)不要內(nèi)聯(lián)寫(xiě)點(diǎn)擊邏輯判斷應(yīng)用 chrome 用hasAppChrome()不要檢查XCUIElementTypeMenuBar等待 WebView 用waitForWebView()不要檢查XCUIElementTypeWebViewmacOS 專(zhuān)屬測(cè)試用process.platform守衛(wèi)或獨(dú)立 spec 文件hash 路由使用navigateViaHash(route)——它內(nèi)部等待 hash 生效、document.readyState就緒以及 React 根掛載后才返回onboarding 之后walkOnboarding()還會(huì)等待#/home與 Home 頁(yè)標(biāo)記然后 spec 才能繼續(xù)導(dǎo)航。環(huán)境變量矩陣文檔給出了 E2E 運(yùn)行時(shí)可調(diào)的全部環(huán)境變量變量默認(rèn)值說(shuō)明APPIUM_PORT4723Appium 服務(wù)端口E2E_MOCK_PORT18473Mock 后端服務(wù)端口OPENHUMAN_WORKSPACE(臨時(shí)目錄)應(yīng)用工作區(qū)目錄OPENHUMAN_SERVICE_MOCK0啟用 service mock 模式OPENHUMAN_E2E_MODE未設(shè)置啟用破壞性測(cè)試支持 RPCE2E runner 會(huì)置為1OPENHUMAN_E2E_AUTH_BYPASS未設(shè)置啟用 JWT 旁路認(rèn)證DEBUG_E2E_DEEPLINK(verbose)設(shè)為0靜默深鏈日志E2E_FORCE_CARGO_CLEAN未設(shè)置強(qiáng)制在 E2E 構(gòu)建前執(zhí)行 cargo clean從 e2e-run-session.sh 源碼可以看到 runner 實(shí)際還會(huì)導(dǎo)出更多環(huán)境VITE_BACKEND_URL/BACKEND_URL指向http://127.0.0.1:${E2E_MOCK_PORT}把前端與 core sidecar 都指向 mockOPENHUMAN_TELEGRAM_BOT_API_BASE、OPENHUMAN_COMPOSIO_DIRECT_BASE_V2/V3重定向 Telegram Bot API 與 Composio 直連請(qǐng)求到 mock 端口實(shí)現(xiàn)外部依賴(lài)全隔離OPENHUMAN_KEYRING_BACKENDfile無(wú)頭 Linux CI 沒(méi)有可用 Secret Service/keychain改用文件型 keyring認(rèn)證狀態(tài)寫(xiě)入OPENHUMAN_WORKSPACE隨工作區(qū)一起清理OPENHUMAN_CEF_CACHE_PATH指向獨(dú)立臨時(shí)目錄mega-flowspec 會(huì)調(diào)用openhuman.config_reset_local_data刪除整個(gè)OPENHUMAN_WORKSPACE若 CEF 緩存放在工作區(qū)內(nèi)會(huì)被連根拔掉、殺死 WebDriver 會(huì)話報(bào) invalid session id因此 runner 把 CEF 緩存放到工作區(qū)外的兄弟目錄e2e-run-session.sh。Mock 后端的隔離設(shè)計(jì)app/test/e2e/mock-server.ts 是對(duì)共享 mock 后端的薄封裝從 scripts/mock-api-core.mjs 再導(dǎo)出startMockServer、stopMockServer、getRequestLog、setMockBehavior(s)等接口并額外提供 Telegram 注入工具injectTelegramUpdate向 mock 隊(duì)列注入一條 Telegram UpdategetTelegramSentMessages斷言 bot 的出站消息mock-server.ts。runner 在啟動(dòng)前會(huì)生成一份完整的 E2E config.tomle2e-run-session.sh將全部推理路由到 mock 的 OpenAI-compatible 端點(diǎn)api_url http://127.0.0.1:18473 primary_cloud p_e2e_mock default_model e2e-mock-model chat_provider e2e:e2e-mock-model reasoning_provider e2e:e2e-mock-model agentic_provider e2e:e2e-mock-model coding_provider e2e:e2e-mock-model [[cloud_providers]] id p_e2e_mock slug e2e label E2E Mock endpoint http://127.0.0.1:18473/openai/v1 auth_style none default_model e2e-mock-model注釋解釋了為何要預(yù)填充cloud_providersunify_ai_provider_settings遷移在首次啟動(dòng)時(shí)運(yùn)行若cloud_providers為空會(huì)種子化 OpenHuman 入口并設(shè)置primary_cloud從而把所有推理路由到OpenHumanBackendProvidersupports_streamingfalse永遠(yuǎn)返回非流式響應(yīng)mock 收不到/openai/v1/chat/completions。預(yù)填充后遷移跳過(guò)種子化provider_for_role()經(jīng)primary_cloud → slug e2e → auth_stylenone → OpenAiCompatibleProvider解析supports_streamingtruemock 才能收到流式請(qǐng)求。wdio.conf.ts 還實(shí)現(xiàn)了每個(gè) spec 文件開(kāi)頭無(wú)條件調(diào)用/__admin/reset重置 mock 狀態(tài)mock 后端持有模塊級(jí)可變狀態(tài)會(huì)話、Cron 任務(wù)、webhook 觸發(fā)器、請(qǐng)求日志、socket 會(huì)話歷史上一旦某個(gè) spec 失敗未執(zhí)行自己的 reset 就會(huì)污染下一個(gè) spec 文件現(xiàn)在通過(guò)resetMockBackendOncePerSpecFile按文件路徑去重既保證隔離又不打斷同文件內(nèi)it之間有意保留的狀態(tài)。運(yùn)行器與 WDIO 配置單會(huì)話、順序執(zhí)行app/scripts/e2e-run-session.sh 是統(tǒng)一會(huì)話運(yùn)行器負(fù)責(zé)校驗(yàn)構(gòu)建產(chǎn)物存在pnpm test:e2e:build先行并檢查前端 bundle 中確實(shí)包含 mock URL否則明確報(bào)錯(cuò)提示重新構(gòu)建清理平臺(tái)緩存的應(yīng)用數(shù)據(jù)macOS 的~/Library/WebKit|Caches|Application Support/com.openhuman.appLinux 的~/.local/share|.cache|.config/com.openhuman.appWindows 的%APPDATA%/%LOCALAPPDATA%并備份/生成config.toml啟動(dòng) driver輪詢(xún)其/status端點(diǎn)就緒以--maxInstances 1運(yùn)行wdio在 EXIT trap 中依次回收 driver → 應(yīng)用 → 工作區(qū)并對(duì) CEF 子進(jìn)程樹(shù)做先快照子 PID、再殺父進(jìn)程、最后 SIGKILL 殘留的處理避免父進(jìn)程退出后子進(jìn)程被 reparent 到 init 而無(wú)法pkill -P定位e2e-run-session.sh。wdio.conf.ts 的關(guān)鍵配置maxInstances: 1 單會(huì)話WDIO 每個(gè) worker 只建一個(gè) session所有 spec 在同一應(yīng)用進(jìn)程內(nèi)順序執(zhí)行spec 之間無(wú)重啟成本測(cè)試有意依賴(lài)順序spec N 的狀態(tài)流入 spec N1每個(gè) spec 自行負(fù)責(zé)所需重置capabilities[wdio:maxInstances]: 1WDIO 的 per-capability 上限防止 runner 為每個(gè) spec 各調(diào)度一個(gè) WebKit 會(huì)話導(dǎo)致同時(shí)重置應(yīng)用、級(jí)聯(lián)啟動(dòng)超時(shí)before鉤子在窗口句柄列表中優(yōu)先切換到 URL 含tauri.localhost的主應(yīng)用窗口找不到再回退到第一個(gè)非about:窗口afterTest鉤子任何失敗測(cè)試自動(dòng)調(diào)用captureFailureArtifacts見(jiàn)下節(jié)輸出failure-*.png與failure-*.source.xmlbailE2E_BAIL_ON_FAILURE1時(shí)置為 1首個(gè)失敗 spec 后停止Mocha 超時(shí) 120 秒工具密集型 spec 后的重置可能等待 WebKit 與 core 清理保持兩分鐘套件預(yù)算而單個(gè)輪詢(xún) helper 各自保留短而具診斷性的超時(shí)specFileRetries: 0Linux 分片在e2e-run-all-flows.sh重啟 driver 后重試失敗 spec此處重試只會(huì)復(fù)用同一個(gè)卡死的 driver。CI 工作流Push / PR 檢查默認(rèn) PR gate 是 .github/workflows/ci-lite.yml快速車(chē)道質(zhì)量檢查 變更文件的單元測(cè)試E2E 套件不在面向main的 PR 上運(yùn)行完整 E2E 矩陣Rust mock 后端、Playwright Web、Linux/macOS/Windows 桌面運(yùn)行在 .github/workflows/ci-full.yml觸發(fā)條件是目標(biāo)為release分支的 PR 及每次 pushmacOS 與 Windows 桌面 E2E 不隨每個(gè) PR 運(yùn)行需要跨平臺(tái)桌面信號(hào)時(shí)使用手動(dòng)觸發(fā)的 E2E workflow.github/workflows/e2e.yml。.github/workflows/e2e.yml 的手動(dòng)觸發(fā)輸入包括run_linux默認(rèn) true、run_macos/run_windows默認(rèn) false等待原生驅(qū)動(dòng)支持、fulltrue 跑全量分片套件false 只跑指定 spec、spec_path默認(rèn)test/e2e/specs/mega-flow.spec.ts與spec_label。它復(fù)用 .github/workflows/e2e-reusable.yml其中對(duì) Appium 與 chromium driver 做了緩存~/.appium、/usr/local/lib/node_modules/appiumkey 為appium3-chromium-${{ runner.os }}-v2并對(duì) CEF 運(yùn)行時(shí)下載約 400MB與 Rust 構(gòu)建做分層緩存。macOS / Appium ChromiummacOS/Appium Chromium 可用于本地運(yùn)行也可通過(guò)手動(dòng)分發(fā)的 E2E workflow 執(zhí)行步驟固定為安裝 Appium Chromium driver → 構(gòu)建.appbundle → 運(yùn)行全部 E2E flows。故障排查L(zhǎng)inuxWebView not ready 超時(shí)默認(rèn) CEF 運(yùn)行時(shí)下這通常意味著過(guò)期的本地 runner 試圖用 WebKitWebDriver 驅(qū)動(dòng) CEF 支撐的 WebView。當(dāng)前 CI 在 Linux 使用 Appium Chromium driver請(qǐng)改用 app/scripts/e2e-run-session.sh 或 PR CI workflow 的受支持 Linux 路徑。確保DISPLAY已設(shè)置且 Xvfb 在運(yùn)行export DISPLAY:99 Xvfb :99 -screen 0 1280x1024x24 同時(shí)確保 dbus 已啟動(dòng)webkit2gtk 依賴(lài)eval $(dbus-launch --sh-syntax)Linux找不到 Appium Chromium drivernpm install -g appium3 appium driver install --sourcenpm appium-chromium-drivermacOStauri dev下深鏈不工作深鏈要求.appbundle請(qǐng)改用pnpm tauri build --debug --bundles appDocker首次構(gòu)建很慢首次 Docker 構(gòu)建需要編譯 Rust 并安裝 E2E harness 依賴(lài)后續(xù)運(yùn)行使用緩存層Cargo registry 與 git sources 通過(guò) Docker volumes 緩存見(jiàn) e2e/docker-compose.yml 的e2e-cargo-registry、e2e-cargo-git、e2e-rust-target、e2e-tauri-target、e2e-pnpm-store、e2e-node-modules、e2e-cef-cache等命名卷。其中 CEF 緩存卷尤其關(guān)鍵cef-dll-sys將下載寫(xiě)入~/Library/Caches/tauri-cef容器內(nèi)無(wú)命名卷時(shí)每個(gè)新容器都會(huì)重新下載約 400MB 的 CEF 歸檔且容器無(wú)出站 DNS/TLS 訪問(wèn) CDN 時(shí)會(huì)失敗。shm_size: 2gb是為匹配 GitHub-hosted ubuntu-22.04 runner 給 CEF 的共享內(nèi)存配額。示例 SpecNotifications文件app/test/e2e/specs/notifications.spec.ts該 spec 通過(guò)live core sidecar與 Notifications UI 頁(yè)面測(cè)試通知 RPC 方法notification_ingest通過(guò) core RPC 創(chuàng)建新通知notification_list驗(yàn)證已攝入的通知被返回notification_mark_read將通知標(biāo)記為已讀notification_stats檢查聚合統(tǒng)計(jì)形狀UINotifications 頁(yè)面渲染集成通知區(qū)[data-testidintegration-notifications-section]UINotifications 頁(yè)面展示系統(tǒng)事件區(qū)[data-testidsystem-events-section]。運(yùn)行bash app/scripts/e2e-run-spec.sh test/e2e/specs/notifications.spec.ts notifications平臺(tái)說(shuō)明RPC 類(lèi)斷言notification_ingest、notification_list、notification_mark_read、notification_stats通過(guò)統(tǒng)一 Appium Chromium 后端執(zhí)行UI 斷言依賴(lài)browser.execute()支持當(dāng)前后端在所有平臺(tái)均提供。源碼中waitForCoreSidecar先輪詢(xún)core.ping直至 sidecar 就緒最長(zhǎng) 30 秒模塊級(jí)變量ingestedNotifId跨用例共享服務(wù)端生成的 UUID保證 mark_read/list 引用同一通知notifications.spec.ts。Agent 可觀測(cè)的產(chǎn)物捕獲層gitbooks/developing/agent-observability.md 與 app/scripts/e2e-agent-review.sh 提供了一個(gè)**面向編碼 AgentCodex、Claude Code、Cursor**的可檢查運(yùn)行入口落盤(pán)截圖、頁(yè)面源碼 dump 與 mock 請(qǐng)求日志bash app/scripts/e2e-agent-review.sh產(chǎn)物落在app/test/e2e/artifacts/timestamp-agent-review/典型布局app/test/e2e/artifacts/ISO-timestamp-agent-review/ 01-welcome.png 01-welcome.source.xml 02-post-welcome.png 02-post-welcome.source.xml 03-post-onboarding.png 03-post-onboarding.source.xml 04-privacy-panel.png 04-privacy-panel.source.xml mock-requests-after-welcome.json mock-requests-after-onboarding.json mock-requests-after-privacy.json failure-test.png # 僅失敗時(shí)生成 failure-test.source.xml # 僅失敗時(shí)生成 meta.json # 運(yùn)行元數(shù)據(jù) 檢查點(diǎn)索引實(shí)現(xiàn)要點(diǎn)helpers/artifacts.tscaptureCheckpoint(name)按序號(hào)命名捕獲使 run 目錄按時(shí)間順序可讀saveMockRequestLog(name, getRequestLog())落盤(pán) mock 請(qǐng)求日志快照captureFailureArtifacts已接入 wdio.conf.ts 的afterTest鉤子任何失敗測(cè)試自動(dòng)觸發(fā)spec不應(yīng)直接調(diào)用環(huán)境覆蓋E2E_ARTIFACT_DIR強(qiáng)制指定 run 目錄、E2E_ARTIFACT_ROOT自動(dòng)命名 run 目錄的父目錄默認(rèn)app/test/e2e/artifacts、E2E_ARTIFACT_LABEL目錄名標(biāo)簽?zāi)J(rèn)runwrapper 設(shè)為agent-review。新 spec 中按如下方式使用import { captureCheckpoint, saveMockRequestLog } from ../helpers/artifacts; import { getRequestLog } from ../mock-server; await captureCheckpoint(after-connect-click); saveMockRequestLog(after-connect-click, getRequestLog());文檔明確列出該層刻意不做的范圍視覺(jué)基線/組件全狀態(tài)圖像 diff、每次點(diǎn)擊都截圖太吵、真實(shí)集成Gmail/Notion/Telegram僅 mock、新測(cè)試框架/reporter——先讓這一個(gè)閉環(huán)跑通再考慮擴(kuò)展更多 flows。Rust 推理 Provider E2E除桌面 UI E2E 外倉(cāng)庫(kù)還提供純 Rust 層的推理 Provider E2Etests/inference_provider_e2e.rs。它使用wiremockmock HTTP 上游無(wú)需真實(shí) LLM API 調(diào)用覆蓋 OpenAI-compat chat、Anthropic 認(rèn)證風(fēng)格、per-model temperature 抑制、Ollama 本地 provider以及/v1HTTP 端點(diǎn)的認(rèn)證層。# 本地 bash scripts/test-rust-inference-e2e.sh # 通過(guò) DockerLinux與 CI 同鏡像 docker compose -f e2e/docker-compose.yml run --rm inference-e2ee2e/docker-compose.yml 中的inference-e2e服務(wù)復(fù)用同一 CI 鏡像以bash -lc ./scripts/test-rust-inference-e2e.sh為入口掛載工作區(qū)與 Cargo 緩存卷——保證本地復(fù)現(xiàn)與 CI 完全一致。小結(jié)OpenHuman 的 E2E 體系是一套以統(tǒng)一 WebDriver 后端為基礎(chǔ)、以 Mock 全隔離為保障、以穩(wěn)定 testid 與輔助層為規(guī)范、以產(chǎn)物可觀測(cè)為調(diào)試出口的完整工程實(shí)踐文檔定義的 Appium Chromium 方案端口 4723、CSS/DOM 選擇器依然是當(dāng)前文檔中的標(biāo)準(zhǔn)配置而源碼已演進(jìn)為 Wry 運(yùn)行時(shí) tauri-driver 的 Linux 路徑兩者可通過(guò) wdio.conf.ts 與 e2e-run-session.sh 對(duì)照核實(shí)從 element-helpers.ts 的統(tǒng)一定位 API 到 deep-link-helpers.ts 的三級(jí)深鏈回退再到 wdio.conf.ts 的單會(huì)話順序執(zhí)行與 mock 按文件重置每個(gè)環(huán)節(jié)都能在倉(cāng)庫(kù)中找到對(duì)應(yīng)的實(shí)現(xiàn)與注釋依據(jù)想深入源碼的讀者可沿 app/test/e2e/helpers 目錄、app/test/wdio.conf.ts、app/scripts/e2e-run-session.sh、e2e/docker-compose.yml 與 .github/workflows/e2e-reusable.yml 逐步追查將本文每一處結(jié)論落到具體代碼行上?!久赓M(fèi)下載鏈接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/op/openhuman創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情专区综合| 精品无码一区二区三区| 影音先锋视频在线| 日韩有码中文字幕女同性恋 | 青青国产精品在线| 亚洲一本大道中文字幕无码在线| 美女天天干| 97网址www| 黄片直播三级黄片两女一男| 九九九九九九视频免费| 天堂精品| 成人色女网| 97国产成人精品免费视频| 九九无码| 午夜福利合集| 午夜精品久久久99| 丁香五月偷拍| 欧美日韩岛国大片在线观看| 97在线视频观看| 欧洲一区二区三区四区在线观看| 欧美日韩资源在线| 午夜情侣自拍网站| 强奸乱亚洲| 中文字幕一区二区三区四区在线视频| 蜜桃狠狠色伊人亚洲综合网站| 色www精品视频在线观看| 大香交伊人网| 婷婷丁香熟妇综合网| 欧美综合天天| 欧洲黄色网| 好湿好紧视频| 骚人妻少妇视频| 大香蕉99热| 欧美性爱在线无码| 在线无码操| 国产精品亚洲色婷婷久久久| 狠狠干91| 伊人嫩草| 国产三级中文字幕粉嫩| 热99这里有精品综合久久 | 91精品久久久久久77777| www.四虎在线| 91欧美长吊| 在线观看黄色电话| 天天色播亚洲综合网站| 综合欧美激情网| 中字幕人妻一区二区三区| 欧美三四五区| 无码九九九九| 日韩欧美女求操每天更新| 久久久99999久网站| 亚洲日韩av一区二区三区百合| 色爱综合网| 日本久久精品| 色玖玖| 成人性爱全视频观看| h4610国产人妻| 岛国福利在线精品播放| 日韩黄色av中文字幕| 久久国产AⅤ| 亚洲色图图片| 欧美日韩国产另类综合| 久操凹凸视频| 久9热| 色色色999| 日本午夜福利影院| 五月婷视频| 国产精品一二三免费网站| 黄色视频60分钟| 无码天天操| 91社区拍啪人妻| 人人操人人摸人人看人人干| 国产精品久久久久久久久久久久久久久久久久 | 日韩黄色片子| 欧美性爱18观看| 欧美性爱第一区| 波多野结衣被操50分钟免费视频 | 欧美亚洲丝袜美女电影| 国产精品丝袜久久亚洲不卡| 黄色片G G G| 精品二区久久| 狠狠色噜噜狠狠狠狠2018| 美女午夜福利免费视频| 大胆91| 天天天乱色综合全| 97欧美综合网| 人人 操人人 操人人| 亚洲 一区二区 自拍| 韩国成人精品久久久免费看| 91爱综合| 99re在线视频这里只有精品| 久久久人妻| 九九精品99| 超碰av在线| 亚洲五区熟女| 国产人妻久久精品一区二区三区| 亚洲不卡三级手机播放| 思思热影视| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 素人播放一区| 91九久| 日韩精品国模| 精品人妻一区二区三区四区石在线| 日韩婷婷| 色情婷婷久久五月天| 青娱乐国产剧情av一区| 奇米狠999| 91亚洲人电影| 激情视频图片| 人人操人人搞人人草| 日本东京热加勒比久久| 午夜精品99久久久久传媒| 区二区亚洲婷| 蜜臀一区二区三区在线 | 91精品国产91久久福利| 混色激情av| 日日躁天天躁狠狠躁| 亚洲欧美国产va在线播放频| 26uuu欧美| 国产夫妻性生活视频| 色综合一本| 亚洲啪啪性视频| 欧美aⅴ99久久黑人专区| 清纯唯美激情| 亚洲日本男人天堂网| 91免费看中出视频| 亚洲AV无码乱码在线观看性色| 国产丰满熟夫69mpp| 九九久久国产精品怡红院| 亚洲欧美综合区自拍另类| 男人天堂一区二区| 97久久久久| 另类天堂| 欧美综合区| 嗯嗯啊好大| 91久久免费视频互動交流| 欧美三级一级| 青青在线视频日韩欧美| 五月丁香啪啪啪| 天堂亚洲欧美| 99超碰色| 亚洲阿v天堂在线| 欧美日韩国产传媒在线精品| 欧美Aⅴ| 亚洲国产剧情少妇激情| 伊人网免费视频| 伊人青青草久久| 91丨豆花丨熟女| 2010男人的天堂| 91色夜| 欧美日韩丝袜| 日韩操p| 青青草色插素人| 精品欧美不卡在线播放| 久草男人天堂| 屁屁影院一区二区三区国产 | 国产野战露脸在线播放| 久久精品国产精品| 精品一二三区久久AAA片| av线电影| 久久久久国产亚洲一区欧美色图日韩 | 秋霞免费无码视频日韩A片| 男人下部插入女人下部| 国产午夜精品理论片a大结局| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 日韩另类| 亚洲成人在线高清| 三及片网站| 亚洲色阁| 色色99| 久久97超碰| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | av网站免费看| 欧美日韩亚洲电影| 精品国产片亚洲一区| 999久久久国产精品| 亚洲欧美一区二区三区在钱蜜桃| 色噜噜精品一区二区三| 天美91| 啊啊啊不要好疼视频| 丰满人妻区一区二区三| 91无摭挡| 丝袜综合| 婷婷五月天成人网| 亚州操逼图| 操逼精品视频| 伊人青青一区成人视频在线观看区| 国产兽交视频在线播放| 国语精品av| 91久久久视| 亚洲成人日韩小说| 大学生美女口爆| 欧美青青视频| 九九九九九九亚洲| 不卡免费av在线播放| 84YTCOM性无码| 91久久久久久久| 精品视频一区二区| 夜夜夜夜爽| 性吧在线视频| 激情丁香五月婷婷| 中文操嬖片。| 亚洲无线码欧洲精品区别| 午夜啊啊| 91丝袜人妻| 懂色av中文字幕一区二区三区天美| 69超碰综合| 抽插无码高清一区| 天天操夜夜嗨| 亚洲国产精品99久久久| a片自拍直播视频| 精品人妻视频一区二区在线播放 | 国产成人亚洲精品自产在线| 婷婷五月成人| 九九色热| 任你爽视频| 久久亚州精品成人Av无| 日韩成人精品| 精品高清一区二区三区三州| 欧美福利视频啊啊啊啊| 国产精品福利资源在线尤物| 热久久国产| 少妇被c 黄 免费观看| 天天操妹子| 久久女女| 日韩本不卡视频在线观看| 激情视频一二三| 91黑丝少妇| 91麻豆天美国产欧美| 日本三级日本三级99| 99热这里只有是精品10| AV中文字幕剧情1区2区3| 婷婷色综合| 色色激情五月天| 色九九九九久| 中文字幕亚洲欧美在线不卡| 天天操人人操骚逼网站| 久久 久久国内精品亚洲| 美女主播色欲91抠b在线播放| 亚洲中文人妻色| 欧美色图天堂网m| 久久超碰、| 自拍丝袜美腿人妻| 亚洲熟女一区| 久久99干一本高清| 欧美片第一页| 日韩人妻一二三区视频| 国产1769在线| A久久| 中文字幕黄色片| 很很干很很操| 久久成年精品| 日韩成人人妻网站| 91天堂| 电家庭影院午夜69久久夜色精品国产69乱 | 免费在线视频97| 夜夜嗨视频| 欧美不卡五十路| 国产亚洲精品久久久久小| 草草影院最新网址| 男人的天堂2019AV| 北条麻妃性愛视频| 粉嫩小泬久久久一区二区| 我爱搞逼综合网| 精品黑人一区二区| 日本性爱欧美性爱| 色婷婷影视| 欧美亚男人的天堂| 欧美在线干| 测评在线观看AV| 99e久久国产精品| 天天躁日日躁成人字幕aⅴ| 国产99 中文字幕日韩小视频| 操逼操逼视频操逼| 女优视频第10页| 亚洲综合小视频小说在线观看| 日韩av电影网站| 九九碰九九爱97超| 九九探花视频在线观看| 九九亚洲| 校园春色亚洲无码| 成人a v在线播放免费| AV污污污污| 美女尤物福利视频| 综合亚洲欧美| 一区二区三区四区免费视频| 大香蕉五月天婷婷| 亚av顶级裸体一区二区三区四区五区| 亚洲人体视频在线观看| 综合网欧美在线| 中文久久96| 色网亚洲人| 美女写真| 91超碰人人| 91国产丝袜白虎| 国产在线激情视频| 97人人中文网| 天天视频网站黄| 老司机深夜影院18未满| 色网综合网| 国产日韩精品suv| 91操人视频| 国产欧洲精品亚洲午夜拍精品| 欧美日韩大香蕉| 久久后入制服| 日韩无码黄色片| 性欧美天天| 国产精品白丝| 久久精品国产精品亚洲艾通辽熟妇| 美日韩一二三区| 无码高清操逼网址| 综合网,亚洲,欧美| 欧美色亚洲| 欧美另类色图片| 亚洲成人ab| 97人妻碰碰中文无码久热丝袜| 久久久熟女一区| 日本欧美一区二区三区免费| 亚洲欧美九九| 麻豆国产97在线| 色婷婷综合久久久久中文一区二区| 成人性交免费视频| 好湿好紧好爽 视频| 欧美日韩制服| 中文字幕五区| 深夜国产福利| 91丝袜美女| 99亚洲精品| 天天综合网~69| 少妇久久久久久久| 日韩AV电影网站| 亚洲色图亚洲| 好看的91视频| 色网在线视频观看免费| 日韩综合97P| 懂色AV蜜臀无码精品APP| 神马九九九| 亚洲av无码成人精品国产| 黑人性欧美| 成人片在线播放| 大香蕉线| 国产青视频| ji熟女.com| 日韩欧美成人大香蕉| 啊啊啊啊好多水| 久久久久免费少妇| 久久久久久久人妻丝袜| 91黑丝美女| 欧美黄片视频在线观看免费 | 国产高清成人免费视频| 国产十八禁视频| 90后性网国产欧美| 777琪琪午夜免费A片| 亚洲欧洲第二视频在线观看色图| 操操碰| 超碰美女97| 密臀AV在线| 久久久久9999| 美女视频尤物网在线看| 九九九一二三| 九九九九一级| 后入内射蜜桃臀| 日韩中文字幕二区| 国产精品亚洲无码| 超碰97伊人| 人妻少妇一区二区| 久久九九视频九九视频| 丝袜综合网| 天天超级碰碰碰| 久久久久久午夜男人的天堂| 亚洲三区视频| 岛国福利在线精品播放| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 午夜男人一级A片7777| 色网站导航大全| 青青草玖玖爱| 久久一留热品黄| 婷婷丁香五月综合| 久久香蕉国产线看观看猫咪av| 伊人加勒比| 日韩成人人妻网站| 91国产美女丝袜足交精品视频| 男人女人18禁片免费看网站| 国语少妇精| 9ⅰ久久久天天| 家庭乱伦网站国产| 无码丰满熟妇一区二区浪潮AV| 成人一道本免费视频| 日韩熟女乱伦中出| 亚洲密乳AV| 97精品国产97久久久久久免费| 污电影在线观看| 天天激情干| 富二代亚洲精品99| 亚洲成成熟女人综合一区二区| 91大神精品长腿在线观看网站| 99热这里只有精| 日本二区不卡| 无码免费精品高清| 96久久久精品| 亚洲免费成人在线高清无码视频| 中美日韩毛片| 欧美成人免费在线观看| 蜜臀亚洲中文| 啊啊啊啊啊啊啊啊啊啊在线观看| 99婷婷一区二区| 色哟哟国产精品免费网址| 亚洲人综合19| 婷婷激情四射| 超碰97丝袜| 乱人伦 国语对白:视频直接看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 超碰 97国产熟女| 亚洲区 欧美区| 色婷婷电影网| 久久是精品| 一级久久久久久久久久久| 久久99草| 在线色导航| 青青草字幕AV| 91丨豆花丨熟女| 超碰久久网| 欧美久久伊人| 亚洲 欧美综合| 国产农村妇女一区二区| 日本一级特级毛片视频| 射欧美综合| 日日日日做夜夜夜夜无码| 色女99一级片在线观看| 6080YYY午夜理论片在线观看| 98精品国产乱码久久久久久| 中文字幕高清精品一区| 亚洲电影91| 国产操逼视频在线观看| 欧美天天综合站| 欧美一区二区亚洲天堂| 又大又大又大又粗爽高潮观看| 亚洲青青青视频在线| 女同女同恋久久级三级| 国产乱伦亚洲色图高清无码| 天美欧美国产| 综合色99| 伊人热综合| 99re6国产精品99re| 亚洲色啪| 免费AV中文网在线观看| 偷拍片久久| 五月天综合网| AA级电影三区| 久久久久久久久9| 国产精品久久久蜜臀| 国产精品久久久无码AV网站| 啪啪啪亚欧美视频| 亚洲精品一卡二卡三卡福利视频网站| 五月婷婷久久综合| 第四色奇米影视777| 俺也射| 久久久9品一区二区三区| 艹精品| 亚洲欧美骚| 色情亚洲日本成人| 日本 欧美 亚中文字幕| 国产精品亚洲天堂网址| 另类图片综合| 亚洲国产97在线精品一区| 9热9热综合网| 天天爽天天| 日韩AV无码中文一区二区| 91精品91久久久久77777俄罗斯老妇姓x| 九九久久99| 中文字幕在线观看丝袜| 5278欧美一区二区三区| 操操吧亚洲乱伦视频| 丝袜足交视频| 精品国产乱码久久久久久日本公司| 一区久久久二区| 人人操人人狠狠操| 可以在线观看AV的网站| 人妻干天天| 欧美九一精品久久久熟妇| 久热69九色熟妇97| 操人91| 人人摸人人添人人操| 日韩精品资源专区二区| 亚洲美女AV无码| 超碰在线综合97| 欧美白嫩在线放| www久久99| 思思在线免费视频| 欧亚性爱啪啪| 屁屁影院一区二区三区国产| 免费自拍三级综合| 无码精品久久| 超碰在线欧美性爱激情| 欧美日本成人一区二区| 熟妇视频一区二区三区在线| 校园春色亚洲色图| 日本欧美不卡| 久久9精品| 日韩综合97p| 国产一线二线三线av| 久久久111| 久久伦理视频久久大香蕉视频| 干b在线性社区| 人妻一区二区三区| 久久久久一本一区二区青青蜜月| 富二代亚洲精品99| 懂色综合久久久| 极品丝袜无码| 少妇毛片久久| 欧美操逼视频二区| 久草精品一区| 亚洲综合另类色图| 人妻熟女一区二区三区视频| JuliaAnnXXX888| 女人综合网| 国产乱伦搜索结果91P| 一级片视频啪啪| 亚洲一区操| 青娱乐亚洲自拍| 欧美国产精品| 麻豆啪啪啪视频| 五月激情在线| 国产农村妇女精品一二区| 伊人久久大香蕉线AV五月天| 九九九九一级| 97国产精品久久久久| 婷婷10月天青娱乐| 97视频网站| 国产三级在线现体验区| 久久6热视频免费观看| 中文字幕中文字幕一区二区| 国产精品久久久鸭无码的功能| 精品国产一级久久| 日韩乱码Av| 国产精品网站www| 久久久久久久久久久久久久久久9| 亭亭在线资源| 亚洲国产丝袜熟女av| 精品人妻中文字幕4399| 色九九综合| 久久综合久久综合人久久夜精品| 在线情色电影 91大| 超碰精品97| av爱爱爱| 99久热| 啊啊啊97视频| 视频二区美腿制服人妻欧美| CCYY草草影院地址入口| 第一高清av中文字幕| 欧美性天天影视| 麻豆人妻偷人精品无码视频| 久久狠狠色噜噜狠狠狠狠97 | 日韩欧美偷拍美女视频| 欧美丝袜美女电影一二三四区| 9丨久久九九九| 日本性爱欧美性爱| 操碰97| 日韩超碰精品综合| 成人性交午夜免费片| 日韩综合成人免费视频| 精品少妇后入一区二区三区四区人妻巨乳 | 日韩久射综合| 不卡一区二区日本视频| 老女人日韩美91| 欧美黑人日韩少妇色情| 欧美丝袜制服久久| 欧美78| 小说区 图片区色 综合区| 综合色色网| 死我十八禁| 乱伦日本色图AⅤ| 国产一区二区三区久久精品太古里| 97欧美精品| 久久国产视频性吧| 人人操人人肉久久精品| 日日干日日| 少妇精品| 看日韩美女二区三区免费操逼视频| 91熟女视频网| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 另类 综合 日韩 欧美 亚洲| AV乱伦专区| 少妇天堂网络| 欧美日韩亚洲一区二区在线观看| 天天综合网1| 亚洲一区二区久久久久| 日日干夜夜欢| 国产女人成人精品视频| 午夜经典| 1956日韩精品| 欧美福利视频啊啊啊啊| 歐美性天天| 亚洲欧美自拍偷拍| 天天操天天日天天干| 思思热在线cao| 一区二区亚州激情久婷婷欧美| 日本一区二区三区四区免费观看| 丰满少妇精品一区二区| 五月天激情四射| 老熟妇91| 久久久久9999妇女| 亚洲一卡2卡3卡4卡乱码网站| 舔舔啊| 长长久久88视频| 日韩性爱一级片| 久久久久久9999| 色官网在线| 伊人骚琪琪亚洲天堂网站| 99re这里只有精品3| 国产在线激情视频| 精品丰满熟妇人妻一区| 日韩情色视频| AV污污污污| 青草一区二区| 免费看污网址| 日日操天天操| 韩三级a视频在线观看| 91美女国产在线| 少妇二级| 日本高清_区二区三区| 亚洲熟女人妻中文字幕一区二区| 97色97好| 丁香婷婷久久| 亚洲精品国产专区在线观看| 日韩九九九| 精品一久久久| 日韩啪啪啪啪啪| 强奸乱伦大香蕉| 亚洲97在线观看| 99热日| 黄页大片在线观看| 国产精品免费美女视频| 大香蕉一级黄色片久久| 51一区二区三区| 少妇一区二区三区在线观看| 大屁股xxxxx| gogogo免费高清看中国国语| 欧美日韩中文字幕人妻| 啊啊啊不要嗯嗯在线观看| 久久天天性久久伊人| 日韩av一级黄片| 国产高清视频无码在线| 91精品人妻一品二品三品| 亚州中文字幕超碰97| 欧美1727免费观看视频| 天天干天天操天天干天天操| 一本色道久久天天射天天干| 精品亚洲天堂| 久久男人| 久久久少妇诱惑精品视频| 超碰在线人妻不卡| 美女诱惑1区2区| 色色五月婷婷| 91人妻Pr| 玖玖玖玖精品国产剧情| 久久黄片国产一区二区| 老熟妇乱轮| 欧美激情视频一区二区| 深夜激情| 久久精品综合| 中文字幕精品亚洲熟女| 伊人亚洲综合| 亚洲高清少妇| 大香蕉色欲AV| 欧美日韩美女精品久草一区二区三区| 日韩久久艹| 操人妻逼91| 欧美日韩资源在线| 欧美日韩国第一区| 操九九九九九九| 日韩国语字幕| 国产蜜臀精品一区免费尤物| 亚州精人品大香蕉| 久久超碰爱| www.狠狠干.coom| 日本91白丝| 欧美一区91大爱| 大香蕉伊人色偷偷在线| 国产一区二区三区中文字幕| 精品国产乱码久久久久久影片| 夂久色| 欧美不卡在线美女| 9久久9综合| 中文字幕乱码人妻一区二区三区,99精品| 亚洲另类综合欧美| 91丝袜美女| 丝袜综合| 黄色十八禁| 日本亚欧爱爱| 欧美日韩欧美| 97九色| 国产午夜福利专区综合| 中国一级特黄大片护士| 97天天插| yazhououmeizongya| 蜜桃精品视频一区二区三区| 蜜臀av网址| 哑洲在线| 欧美日韩传媒| 中文字幕日韩专区精品系列| 国产亚洲精品激情| 亚洲中文国际强奸字幕| 日韩av在线播放不卡| 成人在线日韩| 亚州成人a∨| 北条麻妃性愛视频| 日韩人人精品| 91老司机在线| 婷婷丁香九月| 亚洲激情av| 国产精品九9| 99精品高潮| 天天狂操夜夜狂日| 免费a级毛片av无码久久精品中文字幕| 在线观看高清AV| 大地资源在线观看中文第二页| 亚洲 日韩 欧美 国产综合体| 亚州色站 日韩电影| 91青青在线视频| 91精品老女人| 日韩精品黄片免费观看| 人人色97| 风月影院男女十八禁| 日韩情色一区二区| 日韩无码黄色片| 3571色综合一区二区二区| 97爱爱影院| 久久97视频| 国产亚洲性生活视频播放| 久久久久久久久久8888| 亚洲av热热色| 超碰99在线| 久久国产乱子伦精品免费女人| 大香蕉伊人久久| 欧美色日本| 91亚洲在线| av日韩手机在线影视| 91在线美女| 91亚洲丝袜熟女| 亚洲天天做日日做天天谢日日| 国产精品无码论坛| 啊啊啊97视频| 清纯唯美亚洲综合| 国产福利影视| 日韩精品操少妇| 91丝袜美女视频| 亚洲一区中文字幕一区| 欧美999999| 少妇综合网| 色婷久久| 97精品网站| 亚洲综合另类小说色区亚洲成av人片在www | 亚洲交性| 九九综合久久| 亚洲图片 激情小说| 久久成年片色大黄全免费网站| 9久久精品| 日韩久草| 国产人妖视频一区在线观看| 熟妇人妻一区二区三区| 日韩91网站| 蜜桃av综合网发布| 国产情色第一第二页在线观看| 岛国黄片网站| 狼人综合婷婷激情四射| 欧美美女视频| 狠狠干综合| 精品人妻一区二区三区不卡断 | 欧 美 自 拍 偷 拍| 亚洲精品蜜桃久久久一区二区三区| 欧成人在线| 青青操狠狠撩| 天天综合网合集91| 日本一区二区做爱的视频| 日本欧美色| WWW啪啪的com| 1204av韩国| 亚洲一区二区三区不卡国产欧美| 有码人妻系列| 国内偷拍精品一区二区| 国产日韩精品一区二区三区| 中文字幕丰满人妻日本| 精品射1999| 国产免费一区2区3区| 国产精品青青草| 国产在线观看一区二区三区| 人妻久热在线| 综合影院永久入口国产| 欧美少妇第一页| 成人无码在线超碰网| 日本东京热大香蕉a片| 高清无码在线播放网站| 黑人精品久久97| 人妻系列无码专区中文有码| 激情久久日韩精品中文字幕麻豆| 亚洲成熟国产精品美女| 一本色道久久综合狠狠操| 婷婷丁香人妻 | 91无码中出人妻视频| 国产精品乱码久久久久| 中日无幕一二三四区| www.99色| 99re在线视频国产| 伊人五月天| 国产精品久久久久久久久久久久| 欧美亚洲性爱一区二区| 亚洲图片色图欧美另类| 屁股久久久久久久久| 91久久99久久91熟女精品| 91色花堂| 少妇三P| 国产色精品午夜大片| 91日产桃蜜| 久久久精久久久| 亚洲欧美在线观看免费| 麻豆一区二区三区在线看 | 水澄无码AV| 黄色大片免费在线| 欧美特黄视频网站| 亚洲精品97在线| 亚洲精品xxx| 亚洲色电影在线| 伊人久久大香线综合无码| 超碰人人超在线观看| 97精品网| 中文欧丝袜诱惑| 天天综合网国产| 91高清无码下载| 老妇女91| 乱码人妻一区二区三区| 免费视频无码| 狼狼色丁香久久婷婷综合五月| 色噜噜人妻av中文字幕| 观看视频图片一区二区三区| 久久亚洲AV成人精品无码| 97国产超碰| 色拍偷亚洲| ,国产乱人伦精品一区二区三区| 女人 A一级| 免费国产视频| 综合大香蕉美。| 亚洲综合在线高清| 九九热超碰| 成人a大片在线观看| 亚洲欧美情色| 天操天操夜操夜月操月年年操操| 亚洲熟妇乱女区二区三区| 欧美成人黄网色网站| 测评在线观看AV| 日韩无码第3页| 丁香五月天久久精品视频一区二区三区| 97香蕉碰碰人妻国产欧美| 内射夫妻三片| 人妻一区二区三区熟女| 久久精品99| 精品96久久| 精品国产少妇高潮视频| 无码国产精品久久久久| 无码高清操逼网址| 亚洲欧美综合| 一本色道久久综合精品婷婷| AV男人天堂网| 91国产美女丝袜足交精品视频 | 91精品久久久久久77777| 成在线人在线观看视频| 美女裸体无遮挡永久免费观看网站| 日韩BBN| 91青青在线视频| 蜜桃精品视频一区| 亚洲天堂另类小说男人| 懂色AV一区二区三区| 日韩另类| 无套内射性感少妇视频| 国产福利小视频高清在线观看| 精品人妻1区| 精品人妻一区二区三区四区石在线 | 久久e6只有精品| 久操99| baisiav| AV中文在线可看| 天天综合精品| 激情五月婷婷| 大香樵伊人网| 91一区二区| 美女尤物福利视频| 97天天爽| 丁香五月天婷婷姐| 久久久9视频| 99r九九| 在线综合 亚洲 欧美中文字幕 | 99热97| 欧美|91色综合| 欧美极品女人的天堂| 69超碰综合| 欧美久久九九| 97青青操视频| 麻豆区99999| 伊人久久大香蕉线AV五月天| 久操操| 超碰在97| 中文字幕无码不卡啪啪| 国产97色在线 | 亚洲| 亚洲资源一区| 亚洲中文字幕在现观看| 日本人妻丰满熟妇久久久久久 | 亚洲男人天堂网站| 亚州男人天堂| 久久产精品一区二区三区电影| 亚洲无码精品AV久久久| 人人操人人插人人摸人人干| 久久久久久国产手机AV| 亚洲欧美国产日本一区二区三区 | 91丨九色丨国产丨人妻在线| 操操操日本的逼| 亚洲精品视频在线播放| 久久综合18p| 99热免费精品| 日本一级不卡一二区| 神马久久久久久久久| 97色综合中文网| 91在线精品一区二区三区| 在线国产福利网址导航| 男女一级A片大黄,一进一出| 亚洲影视综合网| 久久最新视频免费观看| 人妻无码一区二区三区久久99| 欧美色另类| 久久黄片国产一区二区| 中文字幕性感少妇av| 欧美天天拍| 91天美传媒在线| 亚春色色| 操啊国产| 视频分类 国内精品| 97在线免费看| 久热99999| 国产女大学生AV| 国产激情在线| 人妻美腿丝袜制服诱惑综合天堂-| 久久视频少妇美女| 久草新在线| 国产精品一区二区三区,亚洲综合| 久9热| 熟女高潮合集-永久久久-成人AV | 综合久久99亚洲人妻中文在线| 熟女少妇一区二区三区| 黄色片A级一区二区三区| 色五月首页| 亚州春色| 电家庭影院午夜69久久夜色精品国产69乱 | 嫩草黄页| 91一区二区三区蜜桃| 亚洲最大无码中文字幕网站| 高树玛利亚无码流出| 免费男人的天堂| 五月天久久综合网| 熟女精品一区二区三区| 国产欧洲精品亚洲午夜拍精品| 97人肏| 97精品97久久| 91AV入口| 999狠狠综合| 美女爽到高潮91| 亚洲囯产精品女人久久久| 丁香五月天婷婷姐| 东京热91| 久草免费在线一区二区| 91熟女综合| 成人一二| 男人亚洲91首页在线| 久久9免费视频| 国产精品制服丝袜清纯唯美 | 色婷婷在线视频| 亚洲激情欧美色图 | 日韩成人无码| 东京日日夜夜| 精品二区久久| 殴美大黄片| 日产123区精品免费观看| 国产精品免费1区2区视频| 野狼激情网| 蜜臀99精品国产高清在线观看| 日韩免费看黄片| 呦女网站| 韩国午夜理伦三级好看| 亚州综合图片| 欧美18 在线观看| 午夜天堂精品久久| 日韩一级性爱无码| 欧美少妇一区二区三区| 91久久青青草原精品| 亚洲色图91欧美日韩| 超碰97中文| 大香蕉97久久| 9999久久久| 青娱乐 成人娱乐在线| 人妻久久一区二区三区| 首页亚洲国产高跟丝袜诱惑视频| 久夜操| 黑操B| 无码国产精品96久久久久孕妇| 亚洲色吧网| 91精品国产91久久青草| 香蕉一区二区三区在线视频 | 天天操福利视频综合网站| 亚洲女毛多水多21P| 欧美性少妇| 人妻AV在线| 91麻豆天美| 区一二区日韩亚洲乱码av电影| 日韩福利综合一区| 色大香蕉97N| 乱伦av.com| 啊啊啊慢点| 天天看天天综合成人网| 极品销魂美女一区二区| 青女在线| 另类小色呦| juliaann欧美丝袜办公室| 蜜色网色哟哟| 操人人| 屁股久久久久久久久| 91热爆在线| 91老熟女| 大香蕉男人的天堂| 一级久久久久久久久久久| 东京热,男人的天堂| 久久久9视频| 91人妻精华帖| 亚洲色图 91| 天天欧美色| 欧美日产国产在线成人第一区| 99re6久热只有精品6在线直播| 欧美色图20P| 欧美色图色综合| 久久久久亚洲熟妇熟女| 蜜臀久久99精品久久久电影| 另类欧美色| 久久男人| 91麻豆天美| 欧 美 自 拍 偷 拍| 欧美日韩大黄片| 国产一级高跟丝袜| 在线精品福利免费播放| 午夜福利精品| 草久久久| 中文字幕在在线观看网站| 精产国品一区二三产品| 中文乱码字幕观看视频| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 亚洲另类春色| 人人操人人操人人操人人操人人操人人人11.CM | 欧美,亚洲,日韩,v,天堂,手机在线观看 | 91天美免费| 欧美色www亚洲国产阿娇要播| 欧美性爱在线无码| 99热综合| 久久女婷| 蜜臀99久久精品久久久懂爱| 先锋音影AV| 四虎AV在线观看| 五月婷网站| 另类图片天天影视| 物业黑人 AV一区| 丝袜狠狠草尤物人妻av91| 懂色AV蜜臀无码精品APP| 欧美巨大性舒爽顶到了| 欧美亚洲韩国视频十五区| 有码免费观看| 激情五月天色色| 超碰成人公开| 久久永久无码人妻视频| 91青青| 日韩欧美水蜜桃人妻| 久久久久骚| 99色天堂| 秋霞无码av鲁丝片一区| 久久成年片色大黄全免费网站| 国产中文字幕在线观看| 老司机久久| 国产精品2020| 中文字幕高清20页视频| a级理论午夜日本| 岛国毛片手机在线观看| 84YTCOM性无码| 超碰97综合| 中出91视频| 超碰无码五月97| 日韩av色图综合| 国产最新AV| 婷婷色色五月天| 亚洲欧美日韩精品久| 又粗又长又爽在线观看| 国产无码三级视频在线观看| 蜜臀久久99精品久久久电影| 91亚洲黄色网| 欧美草草| 骚日日av| 欧美黑人日韩少妇色情| 欧美日韩人妻少妇 一区二区三区| 天美一二三在线观看Av| 国产精品青青草| 一本一道人妻久久一区二区三区 | AⅤ片水多多| 久久色网| 蜜臀久久99精品久久久| 日本色日夜干| 91另类| 男人午夜天堂| 亚洲牲交| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 爱爱60秒免费视频| 国产伦精品免编号公布| 牛牛操视频逼| 你懂的在线观看区国产| 最新亚洲黄色免费电影| 少妇综合| 亚洲熟女乱色一区二区三区| 国模无码人体一区二区三| 成人26uuu| 欧美日韩电影成人在线| 激情抓乳插进去啪啪啪日韩 | 午夜小电影在线插入淫高潮 | 玖玖综合视频| 99操逼| 亚洲AV无码乱码| 一级毛片电影免费看| а√天堂资源官网在线资源| 亚洲AV麻豆Aⅴ无码电影一| 国产在线视频二区| 国产AV激情无码久久无码 | xxxx网站亚洲精品| 久久久精品无码亚免费| 欧美一级黄片免费播放| 99无码视频| 热久久91婷婷| 91成人国产综合久久精品蜜月| 亚洲男人的天堂网| 久久风骚城市人| 成人久久久| 欧美人人曰人人操人人射射| 国产乱码精品一区二区三区四川| 乱伦熟女区| 人妻夜夜爽天天爽麻豆三区网站 | 国产精品69久久久久久久| 女人的天堂大香蕉网| 夜夜操91744565| 亚 欧 美 综合| 日韩一性一交一A片俄罗斯| 精品国产乱码久久久久久蜜臀| 夜夜骑夜夜操| 国产精品毛片?v一区二区三区| 国产精品蜜乳AV| 蜜臀av在线播放一区二区三区| 久久综合精品一区二区三区| 亚欧美综合网。| 97免费在线观看视频| 国产精品亚洲天堂网址| 九九色图|