Files
obsidian-livesync/test_e2e/tests/basic.spec.ts

83 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* tests/basic.spec.ts
*
* Smoke tests for the Self-hosted LiveSync plugin running inside the real
* Obsidian desktop application.
*
* What these tests verify
* -----------------------
* 1. Obsidian can launch with a fresh vault that has the plugin pre-installed.
* 2. The vault workspace loads without errors.
* 3. The plugin's settings tab is reachable via Settings > Self-hosted LiveSync.
* 4. The initial (unconfigured) setup screen is displayed on the first open.
*
* Prerequisites
* -------------
* - `main.js` must exist at the repository root (run `npm run buildDev` first).
* - Obsidian must be installed at the default path, or `OBSIDIAN_PATH` must be set.
*
* How to run
* ----------
* npm run test:obsidian:e2e
* npm run test:obsidian:e2e:headed
*/
import { test, expect } from "playwright/test";
import { setupTestVault } from "../helpers/vault";
import type { VaultSetupResult } from "../helpers/vault";
import {
launchObsidian,
getMainWindow,
waitForVaultReady,
openLiveSyncSettings,
SELECTOR_SETTINGS_CONTENT,
} from "../helpers/obsidian";
import type { ObsidianHandle } from "../helpers/obsidian";
// ---------------------------------------------------------------------------
// Shared state
// ---------------------------------------------------------------------------
let app: ObsidianHandle;
let vault: VaultSetupResult;
test.beforeAll(async () => {
vault = setupTestVault();
app = await launchObsidian(vault.fakeAppData, vault.vaultDir);
});
test.afterAll(async () => {
if (app) {
await app.close().catch(() => {});
}
vault?.cleanup();
});
// ---------------------------------------------------------------------------
// Test 1 basic launch
// ---------------------------------------------------------------------------
test("Obsidian launches and vault workspace loads", async () => {
const page = await getMainWindow(app);
await waitForVaultReady(page);
const title = await page.title();
expect(title).toBeTruthy();
expect(title.length).toBeGreaterThan(0);
});
// ---------------------------------------------------------------------------
// Test 2 settings tab
// ---------------------------------------------------------------------------
test("Self-hosted LiveSync settings tab is accessible", async () => {
const page = await getMainWindow(app);
await waitForVaultReady(page);
await openLiveSyncSettings(page);
const content = page.locator(SELECTOR_SETTINGS_CONTENT);
await expect(content).toBeVisible();
await expect(content.filter({ hasText: "Self-hosted LiveSync" })).toBeVisible({ timeout: 10_000 });
});