# Collaborative Document Testing System Система тестирования совместной работы с документами на Node.js с использованием Playwright. ## 🚀 Возможности - **Множественные браузеры**: Автоматически открывает несколько браузеров - **Авторизация пользователей**: Логинится под разными учётными записями - **Совместное редактирование**: Симулирует одновременную работу пользователей - **Автоматические сценарии**: Выполняет заранее заданные действия - **Скриншоты**: Делает снимки экрана на каждом этапе тестирования - **Отчёты**: Генерирует подробные отчёты о тестировании ## 📁 Структура проекта ``` collaboration-test/ ├── package.json # Зависимости проекта ├── README.md # Документация ├── config/ │ └── users.js # Конфигурация пользователей ├── src/ │ ├── index.js # Основной оркестратор тестов │ └── actions.js # Модуль действий браузера ├── examples/ │ └── custom-scenario.js # Пример кастомного сценария └── screenshots/ # Папка для скриншотов (создаётся автоматически) ``` ## 🛠 Установка 1. **Клонируйте проект и установите зависимости:** ```bash npm install ``` 2. **Установите браузеры Playwright:** ```bash npm run install-browsers ``` ## ⚙️ Настройка 1. **Настройте пользователей** в `config/users.js`: ```javascript const users = [ { id: 'user1', name: 'Alice', email: 'your-test-email1@gmail.com', password: 'your-password', role: 'editor' }, // ... добавьте больше пользователей ]; ``` 2. **Настройте тестовый документ** в том же файле: ```javascript const testDocument = { url: 'https://docs.google.com/document/d/YOUR-DOCUMENT-ID/edit', title: 'Ваш тестовый документ' }; ``` ## 🎯 Использование ### Базовый тест ```bash npm test ``` ### Кастомный сценарий ```bash node examples/custom-scenario.js ``` ### Программное использование ```javascript const CollaborationTestOrchestrator = require('./src/index'); const orchestrator = new CollaborationTestOrchestrator(); orchestrator.runCollaborationTest(); ``` ## 📋 Сценарии тестирования ### Встроенные сценарии: 1. **Одновременный ввод текста** - все пользователи печатают одновременно 2. **Последовательное комментирование** - пользователи по очереди добавляют комментарии 3. **Смешанные действия** - комбинация редактирования и комментирования ### Кастомные сценарии: - **Race condition тест** - проверка конфликтов при одновременном редактировании - **Цепочка комментариев** - симуляция обсуждения - **Паттерны поведения** - различное поведение в зависимости от роли пользователя ## 📊 Результаты После выполнения тестов вы получите: - **Скриншоты** в папке `screenshots/` - **JSON отчёт** в файле `test-report.json` - **Консольный вывод** с подробной информацией о процессе ## 🔧 Настройка действий Класс `CollaborativeActions` поддерживает следующие методы: ```javascript // Базовые действия await session.initialize(); // Инициализация браузера await session.login(); // Авторизация await session.openDocument(url); // Открытие документа // Действия с контентом await session.typeText(text); // Ввод текста await session.simulateTyping(5000); // Симуляция печати await session.addComment(text); // Добавление комментария // Утилиты await session.takeScreenshot(name); // Скриншот await session.cleanup(); // Очистка ресурсов ``` ## 🚨 Важные замечания 1. **Безопасность**: Не используйте реальные пароли в production 2. **Лимиты API**: Учитывайте ограничения сервисов (Google Docs, etc.) 3. **Браузеры**: Тесты запускаются в видимом режиме для наблюдения 4. **Таймауты**: При медленном интернете увеличьте таймауты в коде ## 🛡️ Требования - Node.js 16+ - Доступ к интернету - Тестовые аккаунты Google (для Google Docs) - Тестовый документ с правами на редактирование ## 📝 Примеры использования ### Создание кастомного сценария: ```javascript class MyCustomTest extends CollaborationTestOrchestrator { async executeTestScenario() { // Ваш кастомный сценарий await this.myCustomAction(); } async myCustomAction() { for (const session of this.userSessions) { await session.typeText('Мой текст'); } } } ``` ## 🤝 Вклад в проект 1. Fork проекта 2. Создайте feature branch 3. Внесите изменения 4. Создайте Pull Request ## 📄 Лицензия MIT License