jan/Makefile
dinhlongviolin1 5d76a1d138 add e2e test
2025-09-09 08:44:11 -07:00

183 lines
5.8 KiB
Makefile

# Makefile for Jan Electron App - Build, Lint, Test, and Clean
REPORT_PORTAL_URL ?= ""
REPORT_PORTAL_API_KEY ?= ""
REPORT_PORTAL_PROJECT_NAME ?= ""
REPORT_PORTAL_LAUNCH_NAME ?= "Jan App"
REPORT_PORTAL_DESCRIPTION ?= "Jan App report"
# Default target, does nothing
all:
@echo "Specify a target to run"
# Config yarn version
config-yarn:
corepack enable
corepack prepare yarn@4.5.3 --activate
yarn --version
yarn config set -H enableImmutableInstalls false
# Installs yarn dependencies and builds core and extensions
install-and-build: config-yarn
ifeq ($(OS),Windows_NT)
echo "skip"
else ifeq ($(shell uname -s),Linux)
chmod +x src-tauri/build-utils/*
endif
yarn install
yarn build:tauri:plugin:api
yarn build:core
yarn build:extensions && yarn build:extensions-web
dev: install-and-build
yarn download:bin
yarn download:lib
yarn dev
# Web application targets
install-web-app: config-yarn
yarn install
dev-web-app: install-web-app
yarn dev:web-app
build-web-app: install-web-app
yarn build:web-app
serve-web-app:
yarn serve:web-app
build-serve-web-app: build-web-app
yarn serve:web-app
# Linting
lint: install-and-build
yarn lint
# Testing
test: lint
yarn download:bin
yarn download:lib
yarn test
yarn copy:assets:tauri
yarn build:icon
cargo test --manifest-path src-tauri/Cargo.toml --no-default-features --features test-tauri -- --test-threads=1
cargo test --manifest-path src-tauri/plugins/tauri-plugin-hardware/Cargo.toml
cargo test --manifest-path src-tauri/plugins/tauri-plugin-llamacpp/Cargo.toml
cargo test --manifest-path src-tauri/utils/Cargo.toml
# E2E Testing - Separate Steps
# Install all E2E dependencies (system deps + yarn deps)
e2e-install:
@echo "Checking platform compatibility..."
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
@echo "E2E testing is not supported on macOS"
@exit 1
endif
@echo "Installing all E2E dependencies..."
ifeq ($(OS),Windows_NT)
@echo "Detected Windows - installing Windows dependencies..."
powershell -ExecutionPolicy Bypass -File scripts/install-e2e-deps-windows.ps1
else ifneq ($(shell uname -s 2>/dev/null),)
@echo "Detected Linux - installing Linux dependencies..."
chmod +x scripts/install-e2e-deps-linux.sh
./scripts/install-e2e-deps-linux.sh
else
@echo "Unknown platform - attempting Linux installation..."
chmod +x scripts/install-e2e-deps-linux.sh
./scripts/install-e2e-deps-linux.sh
endif
@echo "Installing/updating E2E yarn dependencies..."
cd tests/e2e && yarn install
# Build Tauri app in debug mode for e2e testing
e2e-build: install-and-build
@echo "Checking platform compatibility..."
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
@echo "E2E testing is not supported on macOS"
@exit 1
endif
@echo "Building Tauri app in debug mode for e2e testing..."
yarn build:web
yarn copy:assets:tauri
yarn build:icon
yarn download:bin
yarn download:lib
yarn tauri build --debug --no-bundle
# Run e2e tests (assumes deps and build are done)
e2e-test:
@echo "Checking platform compatibility..."
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
@echo "E2E testing is not supported on macOS"
@exit 1
endif
@echo "Running e2e tests..."
cd tests/e2e && yarn test
# Complete e2e test setup and run (all steps)
e2e-all: e2e-install e2e-build e2e-test
@echo "Checking platform compatibility..."
ifeq ($(shell uname -s 2>/dev/null || echo Windows),Darwin)
@echo "E2E testing is not supported on macOS"
@exit 1
endif
@echo "E2E testing complete!"
# Builds and publishes the app
build-and-publish: install-and-build
yarn build
# Build
build: install-and-build
yarn download:lib
yarn build
clean:
ifeq ($(OS),Windows_NT)
-powershell -Command "Get-ChildItem -Path . -Include node_modules, .next, dist, build, out, .turbo, .yarn -Recurse -Directory | Remove-Item -Recurse -Force"
-powershell -Command "Get-ChildItem -Path . -Include package-lock.json, tsconfig.tsbuildinfo -Recurse -File | Remove-Item -Recurse -Force"
-powershell -Command "Remove-Item -Recurse -Force ./pre-install/*.tgz"
-powershell -Command "Remove-Item -Recurse -Force ./extensions/*/*.tgz"
-powershell -Command "Remove-Item -Recurse -Force ./electron/pre-install/*.tgz"
-powershell -Command "Remove-Item -Recurse -Force ./src-tauri/resources"
-powershell -Command "Remove-Item -Recurse -Force ./src-tauri/target"
-powershell -Command "if (Test-Path \"$($env:USERPROFILE)\jan\extensions\") { Remove-Item -Path \"$($env:USERPROFILE)\jan\extensions\" -Recurse -Force }"
else ifeq ($(shell uname -s),Linux)
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
find . -name ".next" -type d -exec rm -rf '{}' +
find . -name "dist" -type d -exec rm -rf '{}' +
find . -name "build" -type d -exec rm -rf '{}' +
find . -name "out" -type d -exec rm -rf '{}' +
find . -name ".turbo" -type d -exec rm -rf '{}' +
find . -name ".yarn" -type d -exec rm -rf '{}' +
find . -name "packake-lock.json" -type f -exec rm -rf '{}' +
find . -name "package-lock.json" -type f -exec rm -rf '{}' +
rm -rf ./pre-install/*.tgz
rm -rf ./extensions/*/*.tgz
rm -rf ./electron/pre-install/*.tgz
rm -rf ./src-tauri/resources
rm -rf ./src-tauri/target
rm -rf "~/jan/extensions"
rm -rf "~/.cache/jan*"
rm -rf "./.cache"
else
find . -name "node_modules" -type d -prune -exec rm -rfv '{}' +
find . -name ".next" -type d -exec rm -rfv '{}' +
find . -name "dist" -type d -exec rm -rfv '{}' +
find . -name "build" -type d -exec rm -rfv '{}' +
find . -name "out" -type d -exec rm -rfv '{}' +
find . -name ".turbo" -type d -exec rm -rfv '{}' +
find . -name ".yarn" -type d -exec rm -rfv '{}' +
find . -name "package-lock.json" -type f -exec rm -rfv '{}' +
rm -rfv ./pre-install/*.tgz
rm -rfv ./extensions/*/*.tgz
rm -rfv ./electron/pre-install/*.tgz
rm -rfv ./src-tauri/resources
rm -rfv ./src-tauri/target
rm -rfv ~/jan/extensions
rm -rfv ~/Library/Caches/jan*
endif