Разработка
Настройка локальной копии репозитория Wagtail несколько сложнее, чем установка релизной версии, так как она требует Node.js и npm для сборки JavaScript и CSS-активов. (Это не требуется при использовании релизной версии, так как скомпилированные активы включены в релизный пакет.)
Если вы предпочитаете разрабатывать на локальной виртуальной машине, скрипты docker-wagtail-develop и vagrant-wagtail-develop – самый быстрый способ начать работу. Они предоставят вам работающий экземпляр сайта-демонстрации Wagtail Bakery с кодовыми базами Wagtail и bakerydemo, доступными в качестве общих папок для редактирования на вашем хост-компьютере.
Вы также можете настроить облачную среду разработки, с которой можно работать в браузерном IDE, используя проект gitpod-wagtail-develop.
(Скрипты сборки для других платформ будут очень полезны – если вы создадите таковой, сообщите нам об этом в Slack!)
Если вы предпочитаете настроить все компоненты вручную, продолжайте чтение. Эти инструкции предполагают, что вы знакомы с использованием pip и виртуальных сред для управления пакетами Python.
Настройка кодовой базы Wagtail
Лучший способ установить правильную версию Node – использовать Node Version Manager (nvm) или Fast Node Manager (fnm), что всегда будет согласовывать версию с предоставленным файлом .nvmrc в корне проекта. Чтобы убедиться, что вы используете правильную версию Node, выполните nvm install или fnm install из корня проекта. В качестве альтернативы, вы можете установить Node.js напрямую, убедившись, что вы установили версию, указанную в файле .nvmrc проекта в корне.
Вам также потребуется установить библиотеки libjpeg и zlib, если вы этого еще не сделали – см. платформозависимые инструкции по установке Pillow в документации.
Скопируйте репозиторий Wagtail:
git clone https://github.com/wagtail/wagtail.git cd wagtail
При активированной виртуальной среде установите пакет Wagtail в режиме разработки с включенными зависимостями для тестирования и документации:
pip install -e '.[testing,docs]' -U
Установите инструменты для сборки статических активов:
npm ci
Скомпилируйте активы:
npm run build
Теперь все сайты Wagtail, запущенные в этой виртуальной среде, будут использовать этот тестовый экземпляр Wagtail. Мы рекомендуем использовать сайт-демонстрацию Wagtail Bakery в качестве основы для разработки Wagtail. Имейте в виду, что шаги по настройке сайта Wagtail могут включать установку релизной версии Wagtail, которая перепишет установленную вами версию разработки. В этом случае вы должны установить сайт до выполнения шага pip install -e или повторно выполнить этот шаг после установки сайта.
Тестирование
Из корневой папки Wagtail выполните следующую команду для запуска всех тестов Python:
python runtests.py
Запуск только некоторых тестов
На момент написания у Wagtail более 2500 тестов, которые занимают довольно много времени. Вы можете запустить тесты только для одной части Wagtail, передав путь в качестве аргумента к runtests.py или tox:
# Running in the current environment python runtests.py wagtail # Running in a specified Tox environment tox -e py39-dj32-sqlite-noelasticsearch wagtail # See a list of available Tox environments tox -l
Также вы можете запустить тесты для отдельных TestCases, передав путь в качестве аргумента к runtests.py
# Running in the current environment python runtests.py wagtail.tests.test_blocks.TestIntegerBlock # Running in a specified Tox environment tox -e py39-dj32-sqlite-noelasticsearch wagtail.tests.test_blocks.TestIntegerBlock
Выполнение миграций для моделей приложения тестов
Вы можете создать миграции для приложения тестов, выполнив следующую команду из корневой папки Wagtail.
django-admin makemigrations --settings=wagtail.test.settings
Тестирование с PostgreSQL
Примечание
Для выполнения этих тестов необходимо установить необходимые модули для PostgreSQL, как описано в документации Django по базам данных.
По умолчанию Wagtail использует SQLite. Вы можете переключиться на PostgreSQL, используя аргумент --postgres:
python runtests.py --postgres
Если вам нужен другой пользователь, пароль, хост или порт, используйте переменные окружения PGUSER, PGPASSWORD, PGHOST и PGPORT соответственно.
Тестирование с другой базой данных
Примечание
Для выполнения этих тестов необходимо установить необходимые клиентские библиотеки и модули для данной базы данных, как описано в документации Django по базам данных или документации стороннего бэкенда базы данных.
Если вам нужно протестировать с другой базой данных, установите переменную окружения DATABASE_ENGINE со значением имени Django бэкенда базы данных для тестирования:
DATABASE_ENGINE=django.db.backends.mysql python runtests.py
Это создаст новую базу данных под названием test_wagtail в MySQL и выполнит тесты с ней.
Если вам нужны разные настройки подключения, используйте следующие переменные окружения, соответствующие соответствующим ключам в словаре настроек Django DATABASES:
DATABASE_ENGINEDATABASE_NAMEDATABASE_PASSWORD-
DATABASE_HOST- Обратите внимание, что для MySQL это должно быть
127.0.0.1, а неlocalhost, если необходимо подключиться через TCP-сокет
- Обратите внимание, что для MySQL это должно быть
DATABASE_PORT
Также можно установить DATABASE_DRIVER, которое соответствует значению driver в OPTIONS, если используется движок SQL Server.
Тестирование Elasticsearch
Вы можете протестировать Wagtail с Elasticsearch, передав аргумент --elasticsearch в runtests.py:
python runtests.py --elasticsearch
Wagtail попытается подключиться к локальному экземпляру Elasticsearch (http://localhost:9200) и использовать индекс test_wagtail.
Если ваш экземпляр Elasticsearch расположен где-то ещё, вы можете установить переменную окружения ELASTICSEARCH_URL, чтобы указать его расположение:
ELASTICSEARCH_URL=http://my-elasticsearch-instance:9200 python runtests.py --elasticsearch
Единые тесты для JavaScript
Мы используем Jest для тестирования клиентской бизнес-логики или компонентов пользовательского интерфейса. Из корня кодовой базы Wagtail запустите следующую команду для запуска всех фронтэнд-тестов:
npm run test:unit
Интеграционные тесты
Наш набор тестов браузера с конца также использует Jest в сочетании с Puppeteer. Мы настроили это так, чтобы его отдельно устанавливали, чтобы не увеличивать размер установки существующего Node-инструментария. Для запуска тестов вам нужно установить зависимости и в отдельном терминале запустить сервер разработки Django для набора тестов:
export DJANGO_SETTINGS_MODULE=wagtail.test.settings_ui # Assumes the current environment contains a valid installation of Wagtail for local development. ./wagtail/test/manage.py migrate ./wagtail/test/manage.py createcachetable DJANGO_SUPERUSER_EMAIL=admin@example.com DJANGO_SUPERUSER_USERNAME=admin DJANGO_SUPERUSER_PASSWORD=changeme ./wagtail/test/manage.py createsuperuser --noinput ./wagtail/test/manage.py runserver 0:8000 # In a separate terminal: npm --prefix client/tests/integration install npm run test:integration
Интеграционные тесты по умолчанию нацелены на http://localhost:8000. Используйте переменную окружения TEST_ORIGIN, чтобы использовать другой порт или протестировать удалённый экземпляр Wagtail: TEST_ORIGIN=http://localhost:9000 npm run test:integration.
Поддержка браузеров и устройств
Wagtail предназначен для использования на широком спектре устройств и браузеров. Поддерживаемые версии браузеров/устройств включают:
Браузер | Устройство/ОС | Версия(и) |
|---|---|---|
Mobile Safari | iOS Phone | Последние 2 |
Mobile Safari | iOS Tablet | Последние 2 |
Chrome | Android | Последние 2 |
Chrome | Desktop | Последние 2 |
MS Edge | Windows | Последние 2 |
Firefox | Desktop | Последняя |
Firefox ESR | Desktop | Последняя |
Safari | macOS | Последние 3 |
Мы стремимся к тому, чтобы Wagtail работал в этих средах, есть известные пробелы в поддержке Safari 13, внедрённые в Wagtail 4.0 для лучшей поддержки RTL-языков. Наши стандарты разработки обеспечивают удобство использования сайта в других браузерах и будут работать в будущих браузерах.
Поддержка IE 11 была официально прекращена в версии 2.15, так как она постепенно выходит из употребления. Известно, что не работают следующие функции:
- Копирование и вставка форматированного текста в редакторе форматированного текста.
- Прилипающая панель инструментов в редакторе форматированного текста.
- Стиль обводки фокуса в главном меню и меню проводника.
- Доступ к действиям в таблицах со списком страниц с помощью клавиатуры.
Неподдерживаемые браузеры/устройства включают:
Браузер | Устройство/ОС | Версия(и) |
|---|---|---|
Стандартный браузер | Android | Все |
IE | Desktop | Все |
Safari | Windows | Все |
Цели по обеспечению доступности
Мы хотим сделать Wagtail доступным для пользователей широкого спектра вспомогательных технологий. Специфический стандарт, на который мы нацелены, — WCAG2.1, уровень AA. Вот конкретные вспомогательные технологии, которые мы стремимся проверить и, в конечном счете, поддержать:
- NVDA в Windows с Firefox ESR
- VoiceOver в macOS с Safari
- Magnifier Windows и Zoom macOS
- Распознавание речи Windows и Dictation macOS
- Мобильный VoiceOver на iOS или TalkBack на Android
- Windows режим высокого контраста
Мы стремимся к тому, чтобы Wagtail работал в этих средах. Наши стандарты разработки гарантируют удобство использования сайта с другими вспомогательными технологиями. На практике тестирование с помощью вспомогательных технологий может быть сложной задачей, требующей специализированной подготовки — вот инструменты, на которые мы полагаемся, чтобы помочь определить проблемы с доступностью, использовать в процессе разработки и обзорах кода:
- react-axe интегрирован прямо в наши инструменты сборки, для выявления выполнимых проблем. Записывает свои результаты в консоль браузера.
- @wordpress/jest-puppeteer-axe выполняет проверки Axe как части интеграционных тестов.
- Axe расширение Chrome для более комплексных автоматизированных тестов данной страницы.
- Accessibility Insights for Web расширение Chrome для полуавтоматических тестов и ручных аудитов.
Известные проблемы с доступностью
Административный интерфейс Wagtail в настоящее время не полностью доступен. Мы активно работаем над исправлением проблем как в рамках текущего обслуживания, так и в рамках крупных рефакторингов. Чтобы узнать о известных проблемах, проверьте:
- Список задач WCAG2.1 AA для административного интерфейса CMS.
- Наш аудит доступности 2021 года.
Аудит также указывает, какие части Wagtail были и не были протестированы, как проблемы влияют на соответствие WCAG 2.1 и ожидаемое воздействие на пользователей.
Компиляция статических ресурсов
Все статические ресурсы, такие как JavaScript, CSS, изображения и шрифты для административного интерфейса Wagtail, компилируются из соответствующих исходных файлов с помощью Webpack. Скомпилированные ресурсы не добавляются в репозиторий и компилируются перед подготовкой каждого нового релиза. Скомпилированные ресурсы не должны добавляться в рамках запроса на добавление.
Для компиляции ресурсов выполните:
npm run build
Это необходимо делать после каждого изменения исходных файлов. Для отслеживания изменений исходных файлов и автоматической повторной компиляции ресурсов выполните:
npm start
Использование библиотеки шаблонов
Библиотека компонентов пользовательского интерфейса Wagtail создана с использованием Storybook и django-pattern-library. Для запуска локально,
export DJANGO_SETTINGS_MODULE=wagtail.test.settings_ui # Assumes the current environment contains a valid installation of Wagtail for local development. ./wagtail/test/manage.py migrate ./wagtail/test/manage.py createcachetable ./wagtail/test/manage.py runserver 0:8000 # In a separate terminal: npm run storybook
Последняя команда запустит Storybook по адресу http://localhost:6006/. По умолчанию она будет проксировать определенные запросы к Django по адресу http://localhost:8000. Используйте переменную окружения TEST_ORIGIN для использования другого порта для Django: TEST_ORIGIN=http://localhost:9000 npm run storybook.
Компиляция документации
Документация Wagtail построена с помощью Sphinx. Для установки Sphinx и компиляции документации выполните:
cd /path/to/wagtail # Install the documentation dependencies pip install -e .[docs] # or if using zsh as your shell: # pip install -e '.[docs]' -U # Compile the docs cd docs/ make html
Скомпилированная документация теперь будет находиться в docs/_build/html. Откройте эту директорию в веб-браузере, чтобы посмотреть её. Python поставляется с модулем, который очень легко позволяет предварительно просмотреть статические файлы в веб-браузере. Чтобы запустить этот простой сервер, выполните следующие команды:
cd docs/_build/html/ python -m http.server 8080
Теперь вы можете открыть http://localhost:8080/ в своём веб-браузере, чтобы увидеть скомпилированную документацию.
Sphinx кэширует созданную документацию для ускорения последующей компиляции. К сожалению, этот кэш также скрывает любые предупреждения, выдаваемые немодифицированными исходными файлами документации. Чтобы очистить сгенерированный HTML и начать с нуля, чтобы увидеть все предупреждения, выдаваемые при построении документации, выполните:
cd docs/ make clean make html
Wagtail также предоставляет способ автоматической компиляции документации при каждом изменении. Для этого вы можете выполнить следующую команду, чтобы видеть изменения автоматически по адресу localhost:4000:
cd docs/ make livehtml
Автоматическая проверка и форматирование кода при коммитах
pre-commit настроен на автоматическую проверку кода и форматирования при каждом коммите. Для установки pre-commit в ваши git хуки выполните:
pre-commit install
Теперь pre-commit должен запускаться при каждом вашем коммите.
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/stable/contributing/developing.html