From a7091779b7a7abf0e739fd859ca056bcf2b458dc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 21 Jun 2025 14:23:47 +0300 Subject: [PATCH] e2e(desktop): create empty project --- apps/desktop-e2e/.env | 3 +++ apps/desktop-e2e/eslint.config.mjs | 15 +++++++++++++++ apps/desktop-e2e/package.json | 24 ++++++++++++++++++++++++ apps/desktop-e2e/playwright.config.ts | 27 +++++++++++++++++++++++++++ apps/desktop-e2e/src/example.spec.ts | 13 +++++++++++++ apps/desktop-e2e/tsconfig.json | 25 +++++++++++++++++++++++++ pnpm-lock.yaml | 9 +++++++++ tsconfig.json | 3 +++ 8 files changed, 119 insertions(+) create mode 100644 apps/desktop-e2e/.env create mode 100644 apps/desktop-e2e/eslint.config.mjs create mode 100644 apps/desktop-e2e/package.json create mode 100644 apps/desktop-e2e/playwright.config.ts create mode 100644 apps/desktop-e2e/src/example.spec.ts create mode 100644 apps/desktop-e2e/tsconfig.json diff --git a/apps/desktop-e2e/.env b/apps/desktop-e2e/.env new file mode 100644 index 000000000..e1766490e --- /dev/null +++ b/apps/desktop-e2e/.env @@ -0,0 +1,3 @@ +TRILIUM_INTEGRATION_TEST=memory-no-store +TRILIUM_PORT=8082 +TRILIUM_DATA_DIR=data \ No newline at end of file diff --git a/apps/desktop-e2e/eslint.config.mjs b/apps/desktop-e2e/eslint.config.mjs new file mode 100644 index 000000000..1603594d7 --- /dev/null +++ b/apps/desktop-e2e/eslint.config.mjs @@ -0,0 +1,15 @@ +import playwright from "eslint-plugin-playwright"; +import baseConfig from "../../eslint.config.mjs"; + +export default [ + playwright.configs["flat/recommended"], + ...baseConfig, + { + files: [ + "**/*.ts", + "**/*.js" + ], + // Override or add rules here + rules: {} + } +]; diff --git a/apps/desktop-e2e/package.json b/apps/desktop-e2e/package.json new file mode 100644 index 000000000..2f1528fe5 --- /dev/null +++ b/apps/desktop-e2e/package.json @@ -0,0 +1,24 @@ +{ + "name": "@triliumnext/desktop-e2e", + "version": "0.0.1", + "private": true, + "nx": { + "name": "desktop-e2e", + "implicitDependencies": [ + "client", + "desktop" + ], + "targets": { + "e2e": { + "dependsOn": [ + "desktop:build", + "desktop:rebuild-deps" + ] + } + } + }, + "devDependencies": { + "dotenv": "16.5.0", + "electron": "36.5.0" + } +} diff --git a/apps/desktop-e2e/playwright.config.ts b/apps/desktop-e2e/playwright.config.ts new file mode 100644 index 000000000..5c909978e --- /dev/null +++ b/apps/desktop-e2e/playwright.config.ts @@ -0,0 +1,27 @@ +import { defineConfig, devices } from '@playwright/test'; +import { nxE2EPreset } from '@nx/playwright/preset'; + +require('dotenv').config({ + path: __dirname + "/" + ".env" +}); + +// For CI, you may want to set BASE_URL to the deployed application. +const port = process.env['TRILIUM_PORT']; + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + ...nxE2EPreset(__filename, { testDir: './src' }), + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + } + ], +}); diff --git a/apps/desktop-e2e/src/example.spec.ts b/apps/desktop-e2e/src/example.spec.ts new file mode 100644 index 000000000..1e3e4181d --- /dev/null +++ b/apps/desktop-e2e/src/example.spec.ts @@ -0,0 +1,13 @@ +import { test, expect, _electron as electron } from '@playwright/test'; +import { join } from 'path'; + +test('Electron app should display correct title', async () => { + // Launch Electron app + const distPath = join(__dirname, '../../desktop/dist/main.cjs'); + const app = await electron.launch({ args: [ distPath ] }); + + // Get the main window + const window = await app.firstWindow(); + await expect(window).toHaveTitle("Setup"); + await app.close(); +}); diff --git a/apps/desktop-e2e/tsconfig.json b/apps/desktop-e2e/tsconfig.json new file mode 100644 index 000000000..1df867f3a --- /dev/null +++ b/apps/desktop-e2e/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "allowJs": true, + "outDir": "out-tsc/playwright", + "sourceMap": false + }, + "include": [ + "**/*.ts", + "**/*.js", + "playwright.config.ts", + "src/**/*.spec.ts", + "src/**/*.spec.js", + "src/**/*.test.ts", + "src/**/*.test.js", + "src/**/*.d.ts" + ], + "exclude": [ + "out-tsc", + "test-output", + "eslint.config.js", + "eslint.config.mjs", + "eslint.config.cjs" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee4ca6065..42c321729 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -401,6 +401,15 @@ importers: specifier: ^7.1.1 version: 7.1.3 + apps/desktop-e2e: + devDependencies: + dotenv: + specifier: 16.5.0 + version: 16.5.0 + electron: + specifier: 36.5.0 + version: 36.5.0 + apps/dump-db: dependencies: better-sqlite3: diff --git a/tsconfig.json b/tsconfig.json index 743d3d834..481f2f1b5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -62,6 +62,9 @@ }, { "path": "./apps/website" + }, + { + "path": "./apps/desktop-e2e" } ] }