色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
色情乱伦AV| 91老熟女逼| 中国和日本人色哪个不下载能放| 亚洲色图91欧美日韩| 国产内射爽爽大片| 一区二区三区探花在线观看| 久久久涩| 少妇精品久久久| 欧美激情综合| av天堂影视中文在字幕在线中文| 一个人免费视频观看在线WWW| 黄色无码高清黄色无码网站| 女人妻一区| 久久久久久久| 中文字幕精品人妻丝袜| 亚洲婷婷丁香在线| 亚洲日韩青青草色月| 日韩AV噜噜噜一区二区三区四区| 爽 好舒服 无码刺激久久| 1204金沙人妻懂旧版免费| 91日韩| 爱av免费| 色妇综合网| 99综合视频一体| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| www亚洲欧美| 久久xx| 欧美—性—交—色| 激情婷婷丁香| 最新无码国产| 无码视频一区二区| 伊人久久在线视频观看| 9久久9综合| 97超碰欧美| 蜜臀久久一区二区| 精品玖九九久| 日韩乱码Av| 久久久四区| 怡红院怡春院| 在线观看免费视频国产| 久久美国毛片| 五月天色综合| 国产乱伦搜索结果91P| 欧美极品女人的天堂| 蜜臀99久久精品久久久久| 色五月婷婷网| 黄色片一区二区三区四区五区 | 欧美一区二区三区成人性生活| 2020中文在线一区二区三区| 欧美狠狠操| 翔田千里一区二区三区奶水| 上床啊啊啊| 高清不卡国产| 久久精视频美日韩在线视频| 日本东京热久久久电影| 日本免费一区二区不卡| 蜜臀人妻少妇久久在线观看| 国产成人在线观看综合| 女人久久久| 五十路熟女工口| 亚洲aV性爱| 性色A∨91| 亚洲情色在线| 激情小说五月天| 天天影视综合色| 久久久久久中文字幕中文字幕最新| 中文字幕免费在线观看| 国产乱弄免费在线视频。 | 精品久久久av无码免费| 少妇国产不卡| 国产一区二区三区影片| 国产25页| 天美传媒国产原创中文字幕亚洲欧美另类| 国产成人精品日本亚洲语言| 日韩性爱电影一区 | 九九视频黄色片| 大香蕉手机在线视频| 久久久久成人亚洲国产| 性爱乱伦视频免费| 中文字幕在线免费观看| 天堂性色| 97操B| 久久9精品视频| 两女互慰AV高潮喷水在线观看| 五月婷婷综合网| 黑丝内射一区二区三区| 长久操视频| 夜夜嗨AV一区天天| 国产一区二区三区精品观看啪| 亚洲婷婷丁香在线| 91亚洲最新在线| 91丝袜激情在线| av天堂天堂av日韩| 一级性爱视频免费在线| 亚洲久久东京热一二三四五区视频| 国产精品一二三免费网站| 亚洲欧美色图小说| 国产后入式在线观看| 久久最新视频免费观看| 色哟哟国产精品免费网址| 久久性爱大全| 播播亚洲小说亚洲| 唐山老熟妇露脸啪啪叫| 天天上日日上日韩精品| 五十路三区在线| 深夜激情| 欧美色图亚洲色| 一本一道久久综合久久| 青青青草伊人精品| 欧美天天综合站| 欧美色图天堂网m| 国产97视频免费观看| 极品国产内射| 日韩免费高清大片在线| 欧美v日韩v亚洲v最新在线| 男女啊啊啊啊啊| 男人天堂综合| 九九久久首页| 亚洲天堂自拍| 无码男人天堂| julia ann久久| 夜精品久无码| 激情文学 亚洲图片| 免费成人在线熟妇网| 熟妇人妻一区二区 | 人妻精品一区二区在线| 午夜理论片在线观看免费| 日本1区2区不卡视频| av网站免费看| 91被操| 国产日韩精品suv| 男人的天堂2018| 欧美丝袜91| 国产激情在线| 色黄污美女啪啪啪免费网站| 特级丰满少妇一级AAAA爱毛片| 黄色片A级一区二区三区| 精品国产无码中文| 牛黄色久午久| 精品大久久| 九九热五区| 爽爽爽免费视频| 国产乱人妻精品入口| 目产99999久久999| 久久是精品| 99re久久| 色哟哟AⅤ| 日韩精品国产一区二区| 免费精品福利在线观看| 天美麻花大全视频| 久操B网| 欧美性战999| 午夜福利在线合集| 亚洲中亚日激情视频| 亚洲欧美激情小说| 久久久久亚洲三级电影| 午夜寂寞欧美| 亚洲丝袜色| 99青青草国产视频| 美女91在线| 伊人一区二区在线播放| av天堂5| juliaann精品熟女一区| 91欧美丝袜| 97视频在线播放| 可能人人看人人摸| 97综合在线观看| 亚洲一二三四区机械| 啊啊啊好舒服好爽啊啊啊视频| 嗯嗯啊啊好大好爽| 少妇久久久久久久久| 日韩99精品视频综合区| 婷婷色五月激情| 中文字暮97| 天天摸夜夜操视频| 一起草视频在线| 国产精品日韩在线一区| 青娱乐 成人娱乐在线| 超碰97最新人妻| 997色在线| 婷婷色综合欧美日韩| 日韩一级片在线看| 俺也射| 精品日韩人妻视频| www.色婷婷| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 热99这里有精品综合久久 | 五月婷视频| 屌妞视频久久久久久久| 一级一性爱免费视频| 抽插无码高清一区| 91精品少妇搡搡搡| 脫衣舞一区二区三区| 中文字幕老熟妇黄色视频| 久久久一区二区| 天天激情综合站| 99热超碰| 色悠久| 亚洲AV成人无码一区二区三区在线观看| 亚洲 欧美 小说| 啊啊在线| 久久久免费一级黄片| 性爱动态120秒| 97精品在线| 肏逼福利网站| 欧美五区| 人妻少妇被猛烈进入中| 日韩有码免费视频| 亚洲欧洲日韩中文字幕一区| 久久久久国产无av| 日本道人妻久久久在线不卡色视频| 精品成人动漫一区二区| 欧亚揄拍偷拍精品视频| 乳欲人妻办公室奶水| 亚洲一区二区麻豆影院| 少妇干B| 青青草白白色| 在线观看AV片| 91亚洲狠狠色| 亚洲色人妻综合| 国产亚洲日韩欧| 欧美 亚洲 91| av日韩在线观看电影| 97九色| 中文字幕文字幕无码一区二区三区电影99| ,成人免费啪啪视频| 92性色国产午夜福利在线661| 色99在线| 美女黄网| 9 9精品一区二区三区| 亚洲天堂一二| 啊啊啊好爽快点啊啊啊嗯嗯| 偷拍视频青青草在线视频| 婷婷色导航| 青青草好吊色| 99在线精品视频| 91爱| 九月婷婷久久| 欧美黄片免费在线观看视频| 亚洲妇色| 国产成人无码高清| 午夜精品久久99蜜桃的功能章节| 91男女啊啊啊| 天天综合91| 人人操天天爽| 久久久久久日韩| 91中文字幕在线观看| 国产视频第二页| 久久伊人大香蕉| 一道α片欧美| 啊啊啊啊啊啊啊国| 黄色网址在线免费观看| 国语精品av| 色哟哟-国产专区| 国产主播福利| 久久香蕉国产线看观看亚洲女人 | 欧美性爱1080p| 夜夜骑日日| 婷婷五月在线视频| 亚洲欧洲国产综合av| 一级性爱视频免费观看| 国产强奸AV在线| 人妻丰满熟妇av无码区蜜桃| 青青青艹在线视频| 国产肏屁眼视频| 亚洲国产精品久久久久久久久久| 国产精品岛国片在线观看| 国产亚洲性生活视频播放| 综合久久少妇中文字幕| 亚洲欧洲综合成人av一区| 亚洲色图综合网| 青青草吊丝| 久久天堂婷婷网| 国产日本久久免费精品| 国产97色在线| 日韩操人| 亚洲AV免费在线观看| 伊人久久88国产女| 91人妻爽爽人人做人人澡| 亚洲欧美国产其他二区| 强奸乱伦资源| 熟女字幕| 欧美疯狂做爰xxxx| 伊人久久婷婷| 啊啊啊com| 久久‘黄片视频| 亚洲图片偷拍视频区| 国产高清免费不卡av| 国产精品一区午夜福利| 户外裸露刺激视频第一区| 91艹B视频| 国产成人bd在线观看| 日本www操操操| 5278欧美一区二区三区| 一区二区偷拍拍视频| 亚洲天堂色图| 亚州中文字幕超碰97| 蜜桃在线观看一区二区三区 | 操老熟女AV| 四季AV一区二区凹凸精品小说| 五月婷婷色| 2020国产精品| 久久99亚洲精品久久99果| 不卡av在线中文字幕| 东北少妇高潮zzzz| 美日韩男女操屄视频| 七月婷婷综合| 久久久人妻| 久久精品中文| 91中文字幕在线观看| 智利AV在线网| 久久久久久免费电影| 亚洲色图 综合| 欧美国产精品久久九九| 综合网欧美| 极品另类| 亚洲风情在线观看| 久久久久久九九九| 国产品精品自在在线午夜免费| 日韩一卡二卡三卡| 97天天| 国产久久天堂资源| 91一区二匹| 久操免费在线| 男人女人18禁片免费看网站| 凹凸久久人人| 国产免费永久精品无码| 天天看天天综合成人网| 97硬碰| 熟女一区二区三区| 亚洲自拍青操视频| 亚洲欧美首页| 中文字幕日韩电影人妻| 亚洲 国产 精品一区| 成人性爱电影网| 久超碰在| 亚洲一二三四区在线免费看视频| 国产精品诱惑| 美女操逼A A| 操逼操逼视频操逼| 九月婷婷| 久久亚洲人妻| 玖玖久久久| 亚洲精品欧洲色| 日本色日夜干| 亚洲乱色熟女一区| 香蕉综合网| 亚洲情色1区| 丝袜美腿射精91| 热热色色综合| 中文字幕蜜乳av| 尤物视频一区| 东京热激情视频一二三区| 在线97在线| 九九人妻| 五月丁香黄色网| 欧亚乱色熟女一区二区| 亚洲图片 91| 狠狠搞 亚洲91| 啊啊啊啊好大好硬啊啊啊啊啊 | 岛国艾薇凹凸视频天堂| 3571色综合一区二区二区| 丝袜AV一二三区| 97资源免费视频| 欧美精品黑人猛交高潮| 午夜电影在线观看无码专区| 91九九九逼| 美女性91| 福利色色| 啊啊啊啊啊好大好舒服想要| 欧美激情久操网| 男女激情黄色网址| 极品粉嫩少妇视频| 啊啊啊网站| 狠狠色噜噜狠狠狠狠狠色综合久久| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 国内三级自拍小视频在线观看 | 黄片www.| 国产一区二区三区久久精品太古里| 哈哈操 大香蕉| 国产性久久久| 欧美韩国你懂得在线 | 熟女欧美日韩综合婷婷| 国产久久久久久| 亚洲第一在线视频| 天天超级碰碰碰| 欧美日韩啪啪电影| 欧美天天拍| 亚洲风情综合网| 国产Aα| 91国产丝袜足交精品视频| 91模特在线观看| 美女国产一区二区久久| 91/欧美| 摸奶性爱视频网站在线免费播放| 人妻啊啊人妻啊| 美女t无毒不卡不卡| 嫩草影院性色| 久久精品视频一区三区小泽玛利亚| 亚州熟女乱伦| 夜夜久久| 久久久久久久伊人精品| 国产五码丝袜屁眼| 懂色aV一区二区天美传媒| 日日干日日| juliaann欧美丝袜办公室| 一起草日韩| 都市激情人妻一区二区青青操视频| 日韩欧美大片免费高清啪啪| 色性荡荡荡荡视频| 黄色香蕉视频网站一区| 久久一二三四不卡 | 91黑丝美女| 天天上日日上日韩精品| 欧美无圣光在线| 八戒午夜福利理论片| 国产AV人人 夜夜人人澡| 久久亚州精品成人Av无| 欧美丝袜美女电影一二三四区| 国产精品美女在线一区| 亚洲在钱| www.婷婷六月天| 久久久精品网| 婷婷丁香一区二区三区| 激情国产乱伦Av| 综合大香蕉美。| 日韩一级片| 青草成人免费视频一com| 国产视频一区二区在线| 中文字幕av亚洲精品| 射丝袜高跟鞋99| 中文字幕人成乱码熟女香港| 丝袜色综合| 色色操| 香蕉欧美| 秋霞鲁丝午夜无码一区二区三| 国产熟女精品区| 操逼操逼逼操操逼91 | a片亚洲一本通视频| 天天视频综合在线观看视频| 国产精品久久久久婷婷二区次| 天天色悠悠激情| 夜夜操青青草| 国产精品久久久久久久久久久久久久吹| 熟妇人妻精品一区二区视频色欲| 国产日韩精品无码去免费专区国产| 日韩欧美水蜜桃人妻| 丁香六月综合激情| 中文人妻av高清一区| 99热欧美| 久日91在线| 97自拍视频在线| 国产精品日韩在线一区| 亚洲极品| 青青草伊人久久| 麻豆国产免费影片| 午夜超爽| dy888午夜老子影视达达兔| 偷拍五区| 亭亭丁香激情| 超碰在线成人| 少妇无码av专区线| 秋霞Av理论一级在线| 啊啊啊啊啊舒服| 刺激性视频黄页| 欧美成va视频网站| 精品毛片av一区二区| 国产一线二线三线av| 老汉网| 欧美日不卡| 综合久久欧美| 免费啪啪一级视频| 香蕉热人人精品| 中文字幕制服诱惑| 综合网亚洲在线| 亚州熟妇精品| 久久大线蕉一区| 偷拍 精品另类 凸凹了四区| 欧美日韩性爱视屏免费看了| 在线播放免费av福利片| 日韩性爱啪啪视频| 天天射日日干| 久久精品无码专区| 5252色欧美在线男人的天堂| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 欧洲精品人妻| 久久鲁夜| 天天日天天射天天干| 麻豆天美电影一区二区| 色婷婷久久| 亚洲精品无码少妇久久| 8050午夜少妇无码| 亚洲最新中文字幕免费| 性爱视频无打码在线观看| 91色色网站| 国产一区二区在线播放| 热热色中文无码| 亚洲区 欧美区| 91无码人妻精品一区二区三区蜜桃| 欧美激色| 超碰偷拍| 欧色网址| 欧美午夜精品久久久久久3D| 亚洲欧美精品一区天堂久久 | 另类成人首页一区| 国产又长又大又粗的视频| 在线小视频| 嫩草 我啊~嗯~在线| 久久久禁| 91国产大片| 精品九九九九九九九| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 精品国产国产AV| 99热 按摩 日韩| 97 国产一区| 伊人aaa| 中文字幕欧美日本乱码一线二线| 96精品一区| 人妻蜜桃臀| 激情一区二区| 97无码视频在线播放| 2024黄色视频| 成 人片 黄色大片| 色婷婷丁香| 欧美亚洲激情小说| 欧美国产有色电影| 日韩精品亚洲一二三| 国产精品在线免费| 国产一区二区三区免费视频在性观看 | 亚洲色 国产 欧美 日韩| 亚洲精品aa久久伊人| 97综合在线| 77777亚洲蜜臀精品久久综合蜜臀| 国产亚洲99久久精品| 国产精品小视频一区二区三区| n1038 一二三区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 97内射偷拍| 亚洲色图欧美色图制服诱惑| 欧美色图20P| 国产三级在线现体验区| 99久在线精品99re8热| 性欧美另类高清| 亚拍在线| 欧美亚洲系列| 亚洲天堂AV在线播放| 26uuu欧美| 欧美日动态视频| 亚洲欧美洲综合| 手机在线A片| 欧美亚洲激情小说| 人妻精品一区一区三区蜜桃91| 亚洲欧美色图片| 精品人妻一区| 超碰 另类 欧美 | 老熟妇一区二区三区…| 国模精品一区二区三区苹果色戒 | 亚洲春色欧美激情自拍| 丁香五月电影| 青青青草伊人精品| 免费观看性欧美一级| 97人妻碰碰中文无码久热丝袜| 亚洲人妻熟妇三十三区| 欧美成人精品欧美一级乱黄一区二… | 国产久久一区二区午夜| 夜夜免费视频| 日韩综合成人免费视频| 蜜臀少妇一区二区| 一区二区三区 日韩欧美| 四虎永久在线精品免费网址| 亚洲极品| 成人a大片在线观看| 欧美色图亚洲色图成人在在线| 精品人妻一区二区三区不卡断 | 天天干人妇| 视频黄站| 日韩中文字幕二区| JuliaAnnXXX888| 激情小说五月天| 东北女人的毛片| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产最火爆久久国产网站网站| 超碰免费在线| 欧美懂色综合网| 国产最新AV| 97精品久久| 亚州操操穴网| 日本成人免费一区二区三区| 亚洲av综合伊人久久| 日本九九九九| 欧美黑人精品一区二区| 久久AV无码网址| 欧美日韩制服| av72网| 91色宗合| 婷婷色在线| 国产精品久久久啊| 国产极品精品美女视频| 四虎免费视频| 国产激情在线观看| 亚洲欧美电影| 美欧老女人97| av线电影| 久久精品久久久久久久| 日本一区二区三区免费观看| 九九成人视频| 亚洲九九视频| 日韩性爱网址| 中英熟女操女| 校园春色五月天| 精品四五区| 啊啊啊操死我| 青春草莓视频在线观看网址| 亚洲囯产精品女人久久久| 亚洲一区日韩精品中文字幕| 五月婷婷深深爱| 爆乳免费黄网站| 超碰九九| 青青草日逼视频| 日韩成人高清一区二区| 91综合色| 天久久久噜噜噜久久国产精品爽爽| 国产狂喷潮在线精品| 一本久久精品中文字| 激情五月丁香五月| 八戒午夜福利理论片| 夜夜做夜夜爽精品视频| 99re6国产精品99re在线| 色官网色综合| 欧美999| 久久美国毛片| 蜜臀精品1区2区| 熟妇操花| 欧美偷拍区| 992大香蕉| 日日干男人的天堂| 欧美日韩m| 成人网站 免费观看| 国产无码成人无码| 欲综合网| 91无码人妻| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 99热精品在线| 亚洲黄色a级片| 黄片视频观看| 一区二区影视| 高清无码学生妹高潮| 欧美情色贴图| 97视频在线免费看| 屌色在线97视频| 欧美性巨大╳╳╳╳╳高跟鞋| 人人操人人色网| 日日躁夜夜躁狠狠躁超爽| 中文字幕久久亚州无码| 碰碰在线视频| 国产在线播放成人免费| 久久超碰、| 欧美色性爱| 中文字幕av亚洲精品| 最新9久久久9免费视频| 日韩97P| 春色综合免费| 美女干逼2| 哈哈操电影AV| 夜夜嗨一区二区| 9999久久久久| 日韩在线性爱免费视频| 天久久久噜噜噜久久国产精品爽爽 | 天天综合网网欲色| 色综合色色| 亚洲欧美另类图片| 91c色| 亚洲无码一二三区| 日本精品不卡一二三区| 丁香五月天啪啪| 丰满翘臀美女影院视频| 久久国产精品,久久国产| 亚州综合色图| 国产丁香精品露脸视频| 青草精品视频-日本久久久久网站| 欧美成人性活片| 最新日日夜夜天天干干| 亚洲精品人妻吞精av| 91国产精品在线看| 国产精品久久久久久无码红治院| 后入式五六区| 九九九九亚洲| 99在线无码精品秘 入口黑人| 激情色色| 亚洲欧美日韩国产丝袜自拍中文| 噜噜噜噜久久久精品免费| 亚洲欧洲日本精品中文a∨| 婷婷中文网| 日韩欧美亚洲一区二区三区影院| 国产SV一线| 东京热av影院| 黑人中出21连凳花野真衣| 欧美嫩性色| 国产精品制服丝袜中文字幕日韩一区二区三区 | 亚洲综合校园春色| 亚洲午夜免费狠狠干| 美女午夜福利免费视频| 黄色AAAAAAAAAAA大片| wwwcaobibi| 色婷婷六月| 一区久久久二区| 超碰97在线色男人??| 欧美宗合网| 操操逼视频| 丁香五月天堂网| 午夜后入| 精品国产www久久| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 开心激情站| 99色热| 中文字幕五区| 国产天天骚| 色噜噜人妻av 中文字幕| 九九夜精品九九在线| 97超碰中文| 亚州色综合| 一牛影视成人片免费| 91久操| 国精综合一二三区影视| 在线天堂资源亚洲| av天堂精品久久| 成人婷婷丁香| 欧美草草高清日韩视频| 亚洲激情在线观看一区| 激情综合五月| 久久熟女嫩草成人片免费| 国产JDAV无码视频在线观看| 伊人99热| 91欧美色| 日韩乱插| 嫩草91| 亚洲超碰AV| 欧美大片天天看| 性饥渴少妇av无码毛片| 91精品人妻一区二区三区蜜桃臀| 加勒比色99999| 九月丁香综合网| 热久久无毒不卡| 久久一级无码精品毛片6| 伊人精品视频| 国产 热久久久久国产精品| 久久爽爽精品| 911av网站免费观看| 极品粉嫩少妇视频| 人人操,操人人| 999熟女精品| 国产精品99久久久www| 啊啊啊啊啊舒服| 婷婷五月天成人| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 精品国产一区二区三区四区在线看| 国产suv精品一区二区四| 日韩一级欧美一级国产一级台湾 | 久久久久成人蜜桃精品| 日本一级特级毛片视频| 色色99| 九九香蕉网| 91肉片| 欧美亚洲涩涩| 天天操天天插| 麻豆综合一区av| 色欧洲97| 欧美毛片在线网| 精品人妻中文字幕4399| 国产免费小视频| 超碰中文字幕人妻草一区| 熟女突然公开看18禁影片| 蜜臀99久久精品久久久久| ai欧美亚洲小说| 久久久艹艹艹| 色婷婷丁香| 中文字幕,人妻,日韩| 欧美激情精品| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日韩78m视频| 2020视频1区2区3区| 玖玖爱免费观看视频| 青青草中文字幕| 亚洲女优有码无码高清| 欧美 熟女 日韩| 高清不卡国产| www.91色综合| 无码伊人久久大杳蕉中文无码| 久久久久人妻二区精品叶可怜| 欧美人妻少妇| 欧美高清16| 九九热国产| 怡红院成人视频| 精品无av| 日本不卡一二区| 激情视频图片| 亚洲图片视频小说| 97色操| 男人天堂新| 97久久国产精品女不卡| 日韩人妻无码不卡网站| 9I1性色影院| 超碰色97| w w w.久久精品| 一区在线精品中文字幕| 国产精品懂色tv影视免费观看| 91性情| 久久久久久97| 日韩黄色片子| 欧美性爱中文字幕无线码| 免费超碰97在线观看| 亚洲无码?第一页| 国产一区二区三区影片| www.婷婷| 欧美A√综合网 | 欧美在线播放aaaa| 后入美女国产| 1二区9| 日韩三级av片| www熟女乱伦com| 欧美日韩香蕉| 日韩女优在线| 九热超碰| 成人小说另类在线| 日本精品高清一二区一本到| 91黑丝在线播放| 激情欧美日韩女同久久| 78精品| 日韩欧美aⅴ综合网站发布| 国产美女高潮叫床视频| 色呦呦、国产精品| 蜜臀在线看片| 大香蕉视频一二三区| 丁香五月激情啪啪| 亚洲色图综合网| 亚洲精品自拍| 色五月婷婷麻豆在| 一二三区视频在线观看| 欧美偷拍区| 少妇免费视频| 国产精品96久久久久久| 亚洲国产欧美中日韩成人综合视频| 精品久久久中文字幕不| 午夜精品久久久久久久久久久久久 | 熟女字幕| 色悠久久久av| 午夜AV人气不卡| 少妇无码太爽| 欧美色图亚洲色| 久久婷婷五月综合| 久艹99| 成人免费在线网站| 97情超碰色| 俺去俺来也在线www| 小视频国产| AV天天综合| 九草九九九| 激情五月婷| 日韩精品熟妇| 人妻av在线| 日本三级一区二区 在线 | 探花精品视频| 五月丁香啪啪| 青青草国产一区二区三区| av爱爱爱| 欲香欲色天天天综合和网| 最新av网站在线观看| 人妻熟女一区二区三区在线| 370p日韩欧美亚洲精品| 综合欧美日韩在线| AA特级绝黄| 久久久精品,3| 国产精品视频电影| 久久久久久日韩| 欧美激情久操网| 黑人性欧美| 蜜桃臀一区二区aV| 亚洲激情色片| 日本日日色视频| 无码91| 亚洲综合网电影91| 丁香五月天啪啪| 国产欧美亚洲精品a第2页| 2018天天干在线视频| 久久久精品91八戒| 亚洲无码国产探花在线观看| 国产v亚洲v日韩v欧美v片另类| 亚洲色图欧美色18直播在线| 久超碰这里只有精品| 久久中文字幕女同性恋一区| 日本黄页视频在线观看| 男人的天堂在线| 操淫穴亚洲五月丁香| 亚洲综合 欧美| 天美欧美国产| 亚洲天天精品| 青青草这里只有精品| 国色综合天| 日韩成年人性爱视频| 亚洲无码超碰免费| 欧美亚洲| 日韩九区| 青青草吊丝| 天天操天天7| 欧美激情 亚洲色图| 亚洲超碰97| AV和黑人在线播放| 久久婷婷综合国际产色怕| www.狠狠操| 97天天综合网| 嗯嗯啊啊的视频| 天天噜| 亚洲色 国产 欧美 日韩| 丝袜大香蕉| 伦在线97| 在线视频亚洲无码| 91动漫操逼视频| 97视频在线免费看| 91 国产丝袜在线播放-百度| 91天堂网| 免费强奸av| 欧美成不卡网| 四虎免费在线播放| 日韩黄片视频试看| 超碰79人人乐| 亚洲91射| 亚洲成人免费中文字幕| 九九九午夜| 天堂网亚洲区手机版| 三级网色| 成人精品一区二区三区| 97干色| 女人爽到高潮久久久| www.acm成人黄色毛片| 飘花国产午夜精品不卡| 99热亚洲天堂| 91精品人妻一区二区三区蜜臀| 日本视频一区二区三区| 青青草精玖玖69精品| 国产一级高清免费观看| 色999亚洲人成色| 天天影视综合色| 韩国一级做A片免费的| AV色五月天| 国产亚洲禁久一区二区| 亚洲超碰综合网| 国产成人手机视频激情| 国产精品视频在线播放| 天天综合网日韩7799| 激情四射五月天| 另类小色呦| 亚洲色婷婷综合久久一区二区三区| 99热只有这里有精品| 天天综合,91入口| 天天干,天天日| 亚洲精品久久久久久久蜜桃臀| 精品少妇一区二区三区免费观看| 亚洲天堂男人天堂| 黑人中出21连凳花野真衣| 91超碰在线| 天天做日日爱夜夜爽| 麻豆影音天美视频| 色香AV| 五月婷婷爱六月丁香色| 国产欧洲精品亚洲午夜拍精品| 精品人妻中文字幕高清| 亚洲综合小说另类图欧美视频激情小说色五月天 | 久久五月丁香| 日韩不卡一二三四| 成年女人黄网站| 狠狠躁天天躁日日躁| 人人摸.人人色| 国产无遮挡| 欧洲特黄毛片免费看欧洲毛片| 亚洲AV小说| 久久狠狠色噜噜狠狠狠狠97| 亚洲五月丁香花狠狠干一区二区三区 | 日本精品一级二级三级| 日韩女优中文字幕| 国产精品爽爽v| 91欧美性| 亚洲一区二区性爱电影| 2017,超碰| 久久久98网站免费视频| 国产精品人妻免费精品| 亚洲城人男人的天堂| 黄色香蕉视频网站一区| 国产欧美成人精品| 久久久精品成人国产| 农村少妇久久久久久久| 欧美老熟另类| 久久久亚洲高清不打码| 天堂av最新电影网| 日韩三级久久久| 人人看人人插| 老熟妇一区二区三区| 婷婷香蕉欧美在线一区二区三区| 国产女同在线观看视频| 久久久久大香青草精品综合| 黄片无码在线制服| 久操免费在线| 久艹99| 久九干| 91GD.COM| av最新免费中文字幕| 超碰导航97| 天天日美女的B| 久草资源在线视频官方总站日韩丝袜美腿 | 超碰免费人妻在线| 日韩大香蕉AV影片| 天天综合网~91| 91亚洲最新在线| 日韩色香| 久久精品久久久久久久久| 亚洲色图欧美色图另类图片| 91网站18| 无码直播久久久| 思思热国产在线视频| 国产av又色又爽又黄| 三级三级三级a级全黄三| 无遮挡h肉动漫在线观看| 亚州伊人色综台| 超碰99热中文字幕| 欧美极品色| 亚洲视频精选| 人人玩人人添人人澡免费| 国产麻豆福利av在线播放| 自慰白浆在线观看| 亚州成人a∨| 欧美日韩天堂| 亚洲中文字幕熟女少妇一区二区| 日本乱人伦片中文三区| 手机在线A片| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 免费岛国一级片| 国产家庭乱伦表演| 强奸乱伦av电影| 久久精品国产精品亚洲艾通辽熟妇| 蜜桃久久综合视频| 青青欧洲黑| 亚洲熟女人妻中文字幕一区二区 | 丝袜av一区二区三区| 少妇高潮九九九九九九九| 人人搞人人插人人操| 久久精品国产亚洲AV片多多| 天天干一干| 久久 久久国内精品亚洲 | 久九九九九九九热| 不卡六六在线91| 欧美日韩午夜精品一区二区三区| 日韩一级特黄av毛片| 97人肏| 亚洲综合草草| 中国一级操逼视频| 欧美老熟另类| 熟妇无码视频三区| 国产精品探花色| 九九久久久久久爱| 国语精品av| 99久久精品无码一区二区| 综合干干干av久久久综合网| 亚洲成人在线资源| 操逼操2| 六月激情婷婷| 黑人综合色| 欧美一区二区观看在线| 日本999精品视频| 欧美一级在线观看成人| 岛国成人av在线播放网址| 少妇色综合| 国产亚洲精品美女久久久| 久久九九一区二区三区成人| 中文字幕第2页| 精品四五区| 国产精品久久久久久久电影渣男| 2019AV天堂| 俺去俺来也在线www| 一区二区三区高清| 天天摸夜夜摸| 日韩国产成人自拍视频| 78精品| 丝袜美腿校园春色| 色5月婷婷| 成人AV超碰免费在线| 操老熟女AV| 青青草吊丝| 免费综合亚洲中文| 色吧5亚洲| 花花AV导航| 夜夜爽爽夜夜精品视频| 色嘟嘟人妻天堂网| 色综合久| AV麻豆免费一区| 加勒比海成人视频网 | 三级片大波波| 日韩无码a片| 色网亚洲人| 九九九综合精品| 欧美日韩性爱无码| 96精品久久| 91熟女.com| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 91夜色chaopeng| 四季av一区二区凹凸精品小说| 亚洲精品一二区| 97超碰美女| 久久久久久久久9| 天天拍天| 人妻 欧美 中文| 美女露胸露奶头| 无码又爽又硬又激情免费视频| 国模无码人体一区二区三| 亚洲无码一区成人免费午夜 | 高清肉丝中文无码| 欧美亚洲综合色| 国产曰批免费观看久久久| 91色花堂| 日本欧美色| 日本99久久| 91丨九色丨国产丨人妻在线 | 日韩精品午夜操呦呦不卡影院| 在线综合色| 欧美亚洲首页| 欧美综合色,www| 久久老女人| 欧美黄色手机在线观看| 欧美精品久久久久久久丰满| 日本羞羞的视频在线播放| 日韩欧美午夜一区二区| 眼镜人妻101.com| 日韩欧美亚洲一区二区三区影院| 国产福利在线视频网站| 欧美激情性爱视频网站| 久久久91福利姬| 国产日韩欧美中文在线播放| 激情深爱五月天| 17c在线成人免费A片观看| 免费在线黄片视频| 国产成人无码网站在线视频| 秋霞Av理论一级在线| 欧美亚洲宗合色性图| 99这里只有精品| 天堂av2019| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | n1038 一二三区| 日本亚欧爱爱| 精品久| 播播亚洲小说亚洲| 天天干天天操天天拍| 狠狠躁日日躁夜夜躁A| 亚洲动态色图| 1024人妻熟女一区二区三区| 97精品国产97久久久久久| 日韩精品人妻中文字有码在线 | 国产青青美女玩逼视频| 久草这里只有精品| 999亚洲国产视频| 啊啊啊啊啊啊啊国| 亚洲AV色图一区| 人人潮人人摸|