Nincs leírás

shoumen caaf3a5ba6 OK 1 hete
config caaf3a5ba6 OK 1 hete
examples 7328b06cb0 ok 1 hete
src caaf3a5ba6 OK 1 hete
.gitignore 7328b06cb0 ok 1 hete
README.md 7328b06cb0 ok 1 hete
package.json 7328b06cb0 ok 1 hete

README.md

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. Клонируйте проект и установите зависимости:

    npm install
    
  2. Установите браузеры Playwright:

    npm run install-browsers
    

⚙️ Настройка

  1. Настройте пользователей в config/users.js:

    const users = [
    {
    id: 'user1',
    name: 'Alice',
    email: 'your-test-email1@gmail.com',
    password: 'your-password',
    role: 'editor'
    },
    // ... добавьте больше пользователей
    ];
    
  2. Настройте тестовый документ в том же файле:

    const testDocument = {
    url: 'https://docs.google.com/document/d/YOUR-DOCUMENT-ID/edit',
    title: 'Ваш тестовый документ'
    };
    

🎯 Использование

Базовый тест

npm test

Кастомный сценарий

node examples/custom-scenario.js

Программное использование

const CollaborationTestOrchestrator = require('./src/index');

const orchestrator = new CollaborationTestOrchestrator();
orchestrator.runCollaborationTest();

📋 Сценарии тестирования

Встроенные сценарии:

  1. Одновременный ввод текста - все пользователи печатают одновременно
  2. Последовательное комментирование - пользователи по очереди добавляют комментарии
  3. Смешанные действия - комбинация редактирования и комментирования

Кастомные сценарии:

  • Race condition тест - проверка конфликтов при одновременном редактировании
  • Цепочка комментариев - симуляция обсуждения
  • Паттерны поведения - различное поведение в зависимости от роли пользователя

📊 Результаты

После выполнения тестов вы получите:

  • Скриншоты в папке screenshots/
  • JSON отчёт в файле test-report.json
  • Консольный вывод с подробной информацией о процессе

🔧 Настройка действий

Класс CollaborativeActions поддерживает следующие методы:

// Базовые действия
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)
  • Тестовый документ с правами на редактирование

📝 Примеры использования

Создание кастомного сценария:

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