Przejdź do głównej treści

Usługa Docker

wdio-docker-service jest pakietem zewnętrznym, więcej informacji można znaleźć na GitHub | npm

Ta usługa jest przeznaczona do użytku z WebdriverIO i pomaga uruchamiać testy funkcjonalne/integracyjne przeciwko/przy użyciu aplikacji kontenerowych. Wykorzystuje popularną usługę Docker (instalowaną osobno) do uruchamiania kontenerów.

Dlaczego warto jej używać?

Idealnie byłoby, gdyby testy działały w jakimś rodzaju potoku CI/CD, gdzie często nie ma "prawdziwych" przeglądarek i innych zasobów, od których zależy Twoja aplikacja. Wraz z nadejściem Dockera praktycznie wszystkie niezbędne zależności aplikacji mogą być konteneryzowane. Dzięki tej usłudze możesz uruchomić kontener aplikacji lub docker-selenium w swoim CI i w całkowitej izolacji (zakładając, że CI może mieć zainstalowany Docker jako zależność). To samo może dotyczyć lokalnego rozwoju, jeśli Twoja aplikacja musi mieć pewien poziom izolacji od głównego systemu operacyjnego.

Jak to działa

Usługa uruchomi istniejący obraz dockera, a gdy będzie gotowy, zainicjuje testy WebdriverIO, które powinny działać względem Twojej aplikacji w kontenerze.

Instalacja

Uruchom:

npm install wdio-docker-service --save-dev

Instrukcje dotyczące instalacji WebdriverIO można znaleźć tutaj.

Konfiguracja

Domyślnie Google Chrome, Firefox i PhantomJS są dostępne po zainstalowaniu w systemie hosta. Aby korzystać z usługi, musisz dodać docker do tablicy usług:

// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};

Opcje

dockerOptions

Różne opcje wymagane do uruchomienia kontenera dockera

Typ: Object

Domyślnie: { options: { rm: true } }

Przykład:

dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}

dockerOptions.image

Tag nazwy kontenera Dockera. Może być lokalny lub z Docker HUB.

Typ: String

Wymagany: true

dockerOptions.healthCheck

Konfiguracja, która sprawdza gotowość Twoich kontenerów przed rozpoczęciem testów. Zwykle byłby to adres URL localhost. Jeśli healthCheck nie jest skonfigurowany, Webdriver zacznie uruchamiać testy natychmiast po uruchomieniu kontenera Docker, co może być zbyt wcześnie, biorąc pod uwagę, że uruchomienie usługi sieciowej w kontenerze Docker zajmuje trochę czasu.

Typ: String|Object

Opcje dla obiektu:

  • url - adres URL aplikacji działającej wewnątrz kontenera
  • maxRetries - liczba prób do momentu niepowodzenia healthcheck. Domyślnie: 10
  • inspectInterval - interwał między każdą próbą w ms. Domyślnie: 500
  • startDelay - początkowe opóźnienie przed rozpoczęciem healthcheck w ms. Domyślnie: 0

Przykład 1 (String): healthCheck: 'http://localhost:4444'

Przykład 2 (Object):

healthCheck: {
url: 'http://localhost:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}

dockerOptions.options

Mapa opcji używanych przez polecenie docker run. Aby uzyskać więcej informacji na temat polecenia run, kliknij tutaj.

Każda opcja jednoliterowa zostanie przekształcona na -[opcja] (np. d: true -> -d).

Każda opcja składająca się z dwóch lub więcej znaków zostanie przekształcona na --[opcja] (np. rm: true -> --rm).

W przypadku opcji, które mogą być używane więcej niż raz (np. -e,-add-host, --expose, itp.), należy użyć notacji tablicowej (np. e: ["NODE_ENV=development", "FOO=bar"]).

Typ: Object

Przykład:

options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}

dockerOptions.args

Wszelkie argumenty, które możesz chcieć przekazać do kontenera. Odpowiada [ARG...] w CLI Docker run.

Typ: String

dockerOptions.command

Dowolne polecenie, które możesz chcieć przekazać do kontenera. Odpowiada [COMMAND] w CLI Docker run.

Typ: String

onDockerReady

Metoda wywołania zwrotnego, która jest wywoływana, gdy aplikacja Docker jest gotowa. Gotowość jest określana przez możliwość pingowania adresu URL healthCheck.

Typ: Function

dockerLogs

Ścieżka do miejsca, w którym powinny być przechowywane logi z kontenera docker

Typ: String

Przypadki testowania / Receptury

Odwiedź naszą Wiki, aby uzyskać więcej szczegółów.

Welcome! How can I help?

WebdriverIO AI Copilot