mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 10:02:59 +08:00
chore(nx/server): set up e2e
This commit is contained in:
parent
546bb52abe
commit
e18613148b
@ -24,7 +24,7 @@
|
||||
"client:coverage": "cross-env TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db TRILIUM_INTEGRATION_TEST=memory vitest --root src/public/app --coverage",
|
||||
"test:playwright": "playwright test --workers 1",
|
||||
"test:integration-edit-db": "cross-env TRILIUM_INTEGRATION_TEST=edit TRILIUM_PORT=8081 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
||||
"test:integration-mem-db": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
||||
"test:integration-mem-db": "cross-env nodemon src/main.ts",
|
||||
"test:integration-mem-db-dev": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
||||
"dev:watch-dist": "tsx ./bin/watch-dist.ts",
|
||||
"dev:format-check": "eslint -c eslint.format.config.js .",
|
||||
|
@ -27,9 +27,6 @@ export default defineConfig({
|
||||
reporter: "html",
|
||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||
use: {
|
||||
/* Base URL to use in actions like `await page.goto('/')`. */
|
||||
baseURL: SERVER_URL,
|
||||
|
||||
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
||||
trace: "on-first-retry"
|
||||
},
|
||||
|
@ -1,8 +0,0 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
test('has title', async ({ page }) => {
|
||||
await page.goto('/');
|
||||
|
||||
// Expect h1 to contain a substring.
|
||||
expect(await page.locator('h1').innerText()).toContain('Welcome');
|
||||
});
|
@ -1,22 +0,0 @@
|
||||
{
|
||||
"jsc": {
|
||||
"target": "es2017",
|
||||
"parser": {
|
||||
"syntax": "typescript",
|
||||
"decorators": true,
|
||||
"dynamicImport": true
|
||||
},
|
||||
"transform": {
|
||||
"decoratorMetadata": true,
|
||||
"legacyDecorator": true
|
||||
},
|
||||
"keepClassNames": true,
|
||||
"externalHelpers": true,
|
||||
"loose": true
|
||||
},
|
||||
"module": {
|
||||
"type": "es6"
|
||||
},
|
||||
"sourceMaps": true,
|
||||
"exclude": []
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
import baseConfig from "../../eslint.config.mjs";
|
||||
|
||||
export default [
|
||||
...baseConfig
|
||||
];
|
@ -1,24 +0,0 @@
|
||||
/* eslint-disable */
|
||||
import { readFileSync } from 'fs';
|
||||
|
||||
// Reading the SWC compilation config for the spec files
|
||||
const swcJestConfig = JSON.parse(
|
||||
readFileSync(`${__dirname}/.spec.swcrc`, 'utf-8')
|
||||
);
|
||||
|
||||
// Disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves
|
||||
swcJestConfig.swcrc = false;
|
||||
|
||||
export default {
|
||||
displayName: '@triliumnext/desktop-e2e',
|
||||
preset: '../../jest.preset.js',
|
||||
globalSetup: '<rootDir>/src/support/global-setup.ts',
|
||||
globalTeardown: '<rootDir>/src/support/global-teardown.ts',
|
||||
setupFiles: ['<rootDir>/src/support/test-setup.ts'],
|
||||
testEnvironment: 'node',
|
||||
transform: {
|
||||
'^.+\\.[tj]s$': ['@swc/jest', swcJestConfig],
|
||||
},
|
||||
moduleFileExtensions: ['ts', 'js', 'html'],
|
||||
coverageDirectory: 'test-output/jest/coverage',
|
||||
};
|
@ -1,25 +0,0 @@
|
||||
{
|
||||
"name": "@triliumnext/desktop-e2e",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"nx": {
|
||||
"implicitDependencies": [
|
||||
"@triliumnext/desktop"
|
||||
],
|
||||
"targets": {
|
||||
"e2e": {
|
||||
"executor": "@nx/jest:jest",
|
||||
"outputs": [
|
||||
"{projectRoot}/test-output/jest/coverage"
|
||||
],
|
||||
"options": {
|
||||
"jestConfig": "apps/desktop-e2e/jest.config.ts",
|
||||
"passWithNoTests": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"@triliumnext/desktop:build"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
import axios from 'axios';
|
||||
|
||||
describe('GET /', () => {
|
||||
it('should return a message', async () => {
|
||||
const res = await axios.get(`/`);
|
||||
|
||||
expect(res.status).toBe(200);
|
||||
expect(res.data).toEqual({ message: 'Hello API' });
|
||||
});
|
||||
})
|
@ -1,11 +0,0 @@
|
||||
/* eslint-disable */
|
||||
var __TEARDOWN_MESSAGE__: string;
|
||||
|
||||
module.exports = async function() {
|
||||
// Start services that that the app needs to run (e.g. database, docker-compose, etc.).
|
||||
console.log('\nSetting up...\n');
|
||||
|
||||
// Hint: Use `globalThis` to pass variables to global teardown.
|
||||
globalThis.__TEARDOWN_MESSAGE__ = '\nTearing down...\n';
|
||||
};
|
||||
|
@ -1,7 +0,0 @@
|
||||
/* eslint-disable */
|
||||
|
||||
module.exports = async function() {
|
||||
// Put clean up logic here (e.g. stopping services, docker-compose, etc.).
|
||||
// Hint: `globalThis` is shared between setup and teardown.
|
||||
console.log(globalThis.__TEARDOWN_MESSAGE__);
|
||||
};
|
@ -1,9 +0,0 @@
|
||||
/* eslint-disable */
|
||||
import axios from 'axios';
|
||||
|
||||
module.exports = async function() {
|
||||
// Configure axios for tests to use.
|
||||
const host = process.env.HOST ?? 'localhost';
|
||||
const port = process.env.PORT ?? '3000';
|
||||
axios.defaults.baseURL = `http://${host}:${port}`;
|
||||
};
|
@ -1,14 +0,0 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "out-tsc/@triliumnext/desktop-e2e",
|
||||
"esModuleInterop": true,
|
||||
"noUnusedLocals": false,
|
||||
"noImplicitAny": false
|
||||
},
|
||||
"include": [
|
||||
"jest.config.ts",
|
||||
"src/**/*.ts"
|
||||
],
|
||||
"references": []
|
||||
}
|
3
apps/server-e2e/.env
Normal file
3
apps/server-e2e/.env
Normal file
@ -0,0 +1,3 @@
|
||||
TRILIUM_INTEGRATION_TEST=memory
|
||||
TRILIUM_PORT=8082
|
||||
TRILIUM_DATA_DIR=apps/server/spec/db
|
@ -1,10 +1,11 @@
|
||||
{
|
||||
"name": "@triliumnext/client-e2e",
|
||||
"name": "@triliumnext/server-e2e",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"nx": {
|
||||
"implicitDependencies": [
|
||||
"@triliumnext/client"
|
||||
"@triliumnext/client",
|
||||
"@triliumnext/server"
|
||||
]
|
||||
}
|
||||
}
|
@ -3,7 +3,8 @@ import { nxE2EPreset } from '@nx/playwright/preset';
|
||||
import { workspaceRoot } from '@nx/devkit';
|
||||
|
||||
// For CI, you may want to set BASE_URL to the deployed application.
|
||||
const baseURL = process.env['BASE_URL'] || 'http://localhost:4200';
|
||||
const port = process.env['TRILIUM_PORT'];
|
||||
const baseURL = process.env['BASE_URL'] || `http://localhost:${port}`;
|
||||
|
||||
/**
|
||||
* Read environment variables from file.
|
||||
@ -24,8 +25,8 @@ export default defineConfig({
|
||||
},
|
||||
/* Run your local dev server before starting the tests */
|
||||
webServer: {
|
||||
command: 'npx nx run @triliumnext/client:serve-static',
|
||||
url: 'http://localhost:4200',
|
||||
command: 'pnpm server:start-prod',
|
||||
url: baseURL,
|
||||
reuseExistingServer: !process.env.CI,
|
||||
cwd: workspaceRoot
|
||||
},
|
||||
@ -35,16 +36,16 @@ export default defineConfig({
|
||||
use: { ...devices["Desktop Chrome"] },
|
||||
},
|
||||
|
||||
{
|
||||
name: "firefox",
|
||||
use: { ...devices["Desktop Firefox"] },
|
||||
},
|
||||
// {
|
||||
// name: "firefox",
|
||||
// use: { ...devices["Desktop Firefox"] },
|
||||
// },
|
||||
|
||||
// {
|
||||
// name: "webkit",
|
||||
// use: { ...devices["Desktop Safari"] },
|
||||
// },
|
||||
|
||||
{
|
||||
name: "webkit",
|
||||
use: { ...devices["Desktop Safari"] },
|
||||
},
|
||||
|
||||
// Uncomment for mobile browsers support
|
||||
/* {
|
||||
name: 'Mobile Chrome',
|
2
apps/server/.start-prod.env
Normal file
2
apps/server/.start-prod.env
Normal file
@ -0,0 +1,2 @@
|
||||
TRILIUM_ENV=production
|
||||
TRILIUM_DATA_DIR=./apps/server/data
|
@ -150,6 +150,10 @@
|
||||
"dependsOn": [ "build" ],
|
||||
"command": "bash apps/server/scripts/build-server.sh"
|
||||
},
|
||||
"start-prod": {
|
||||
"dependsOn": [ "build" ],
|
||||
"command": "node apps/server/dist/main.js"
|
||||
},
|
||||
"docker-build": {
|
||||
"dependsOn": [
|
||||
"build"
|
||||
|
@ -54,7 +54,7 @@ class IndexService {
|
||||
return;
|
||||
}
|
||||
|
||||
const aiEnabled = await options.getOptionBool('aiEnabled');
|
||||
const aiEnabled = options.getOptionOrNull('aiEnabled') === "true";
|
||||
if (!aiEnabled) {
|
||||
log.info("Index service: AI features disabled, skipping initialization");
|
||||
return;
|
||||
|
@ -9,7 +9,7 @@
|
||||
"client:build": "nx build client",
|
||||
"server:build": "nx build server",
|
||||
"server:start": "nx run-many --target=serve --projects=client,server --parallel",
|
||||
"server:start-prod": "pnpm server:build && cross-env TRILIUM_DATA_DIR=apps/server/data node apps/server/dist/main.js",
|
||||
"server:start-prod": "nx run @triliumnext/server:start-prod",
|
||||
"electron:build": "nx build desktop",
|
||||
"chore:ci-update-nightly-version": "tsx ./scripts/update-nightly-version.ts",
|
||||
"chore:update-build-info": "tsx ./scripts/update-build-info.ts",
|
||||
|
24
pnpm-lock.yaml
generated
24
pnpm-lock.yaml
generated
@ -287,8 +287,6 @@ importers:
|
||||
specifier: 0.7.2
|
||||
version: 0.7.2
|
||||
|
||||
apps/client-e2e: {}
|
||||
|
||||
apps/desktop:
|
||||
dependencies:
|
||||
'@electron/remote':
|
||||
@ -351,7 +349,7 @@ importers:
|
||||
version: 1.0.2
|
||||
copy-webpack-plugin:
|
||||
specifier: 13.0.0
|
||||
version: 13.0.0(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0)))
|
||||
version: 13.0.0(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4))
|
||||
electron:
|
||||
specifier: 35.1.5
|
||||
version: 35.1.5
|
||||
@ -359,8 +357,6 @@ importers:
|
||||
specifier: ^7.1.1
|
||||
version: 7.1.3
|
||||
|
||||
apps/desktop-e2e: {}
|
||||
|
||||
apps/server:
|
||||
dependencies:
|
||||
'@highlightjs/cdn-assets':
|
||||
@ -531,7 +527,7 @@ importers:
|
||||
version: 1.4.7
|
||||
copy-webpack-plugin:
|
||||
specifier: 13.0.0
|
||||
version: 13.0.0(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0)))
|
||||
version: 13.0.0(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4))
|
||||
csrf-csrf:
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0
|
||||
@ -702,7 +698,7 @@ importers:
|
||||
version: 1.0.1
|
||||
webpack:
|
||||
specifier: 5.99.6
|
||||
version: 5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0))
|
||||
version: 5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4)
|
||||
ws:
|
||||
specifier: 8.18.1
|
||||
version: 8.18.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
|
||||
@ -713,6 +709,8 @@ importers:
|
||||
specifier: 3.2.0
|
||||
version: 3.2.0
|
||||
|
||||
apps/server-e2e: {}
|
||||
|
||||
packages/commons:
|
||||
dependencies:
|
||||
'@swc/helpers':
|
||||
@ -15284,14 +15282,14 @@ snapshots:
|
||||
serialize-javascript: 6.0.2
|
||||
webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4)
|
||||
|
||||
copy-webpack-plugin@13.0.0(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0))):
|
||||
copy-webpack-plugin@13.0.0(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4)):
|
||||
dependencies:
|
||||
glob-parent: 6.0.2
|
||||
normalize-path: 3.0.0
|
||||
schema-utils: 4.3.2
|
||||
serialize-javascript: 6.0.2
|
||||
tinyglobby: 0.2.13
|
||||
webpack: 5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0))
|
||||
webpack: 5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4)
|
||||
|
||||
core-js-compat@3.41.0:
|
||||
dependencies:
|
||||
@ -20550,14 +20548,14 @@ snapshots:
|
||||
'@swc/core': 1.5.29(@swc/helpers@0.5.17)
|
||||
esbuild: 0.19.12
|
||||
|
||||
terser-webpack-plugin@5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0))):
|
||||
terser-webpack-plugin@5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4)):
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
jest-worker: 27.5.1
|
||||
schema-utils: 4.3.2
|
||||
serialize-javascript: 6.0.2
|
||||
terser: 5.39.0
|
||||
webpack: 5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0))
|
||||
webpack: 5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4)
|
||||
optionalDependencies:
|
||||
'@swc/core': 1.5.29(@swc/helpers@0.5.17)
|
||||
esbuild: 0.19.12
|
||||
@ -21232,7 +21230,7 @@ snapshots:
|
||||
- esbuild
|
||||
- uglify-js
|
||||
|
||||
webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0)):
|
||||
webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4):
|
||||
dependencies:
|
||||
'@types/eslint-scope': 3.7.7
|
||||
'@types/estree': 1.0.7
|
||||
@ -21254,7 +21252,7 @@ snapshots:
|
||||
neo-async: 2.6.2
|
||||
schema-utils: 4.3.2
|
||||
tapable: 2.2.1
|
||||
terser-webpack-plugin: 5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4(webpack-dev-server@5.2.1)(webpack@5.98.0)))
|
||||
terser-webpack-plugin: 5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack@5.99.6(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.19.12)(webpack-cli@5.1.4))
|
||||
watchpack: 2.4.2
|
||||
webpack-sources: 3.2.3
|
||||
optionalDependencies:
|
||||
|
@ -16,16 +16,13 @@
|
||||
"path": "./packages/turndown-plugin-gfm"
|
||||
},
|
||||
{
|
||||
"path": "./apps/client-e2e"
|
||||
"path": "./apps/server-e2e"
|
||||
},
|
||||
{
|
||||
"path": "./apps/client"
|
||||
},
|
||||
{
|
||||
"path": "./apps/desktop"
|
||||
},
|
||||
{
|
||||
"path": "./apps/desktop-e2e"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user