#!/usr/bin/env node // Запускает ПОЛЬЗОВАТЕЛЬ (не агент). Открывает видимый браузер, вы логинитесь сами // (пароль, MFA), затем нажимаете Enter в терминале — сессия сохраняется в файл. // ВНИМАНИЕ: файл = доступ к вашей учётке M365. Не коммитьте, не пересылайте, удаляйте после тестов. // // node save-session.mjs https://.sharepoint.com/sites/ [.auth/tenant.json] import { chromium } from 'playwright'; import readline from 'node:readline/promises'; import fs from 'node:fs/promises'; import path from 'node:path'; const [url, file = '.auth/tenant.json'] = process.argv.slice(2); if (!url) { console.error('Укажите URL тестового сайта'); process.exit(2); } const browser = await chromium.launch({ headless: false }); const context = await browser.newContext(); await (await context.newPage()).goto(url); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); await rl.question('Залогиньтесь в открытом окне, дождитесь загрузки сайта и нажмите Enter… '); rl.close(); await fs.mkdir(path.dirname(file), { recursive: true }); await context.storageState({ path: file }); await browser.close(); console.log(`Сессия сохранена в ${file}. Проверьте, что путь есть в .gitignore.`);