[RAILS] Erstellen Sie eine Browsertestumgebung mit Capybara in der Docker-Entwicklungsumgebung

Überblick

Wir haben zusammengefasst, wie eine RSpec-Testumgebung in der Docker-Entwicklungsumgebung erstellt wird. Da ich Anfänger und Selbststudent bin, denke ich, dass es einige Fehler und bessere Möglichkeiten gibt, dies zu tun, aber ich wäre dankbar, wenn Sie zu diesem Zeitpunkt darauf hinweisen könnten.

Ich habe auf den folgenden Artikel verwiesen. Ich habe einen RSpec-Systemtest mit Selenium Docker on Rails on Docker versucht.

Einführung

Zuvor habe ich einen Artikel über das Löschen von Browsertestfehlern in Rails-Entwicklung mit Docker kann keine Browsertests ausführen veröffentlicht. Wenn Sie einen Kommentar abgeben und Docker-Compose verwenden, um Chrome selbst als einen der Dienste auszuführen, Mir wurde geraten, dass es einfach zu testen sei, ohne die Rails-Umgebung zu verschmutzen, also habe ich es versucht. Vielen Dank für den Hinweis!

1. Fügen Sie der Docker-compose.yml einen Chrome-Dienst hinzu

Das verwendete Image ist Standalone-Chrome, das von Anfang an in Chrome installiert ist.

docker-compose.yml


version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/[App Name]
    ports:
      - 3000:3000
    depends_on:
      - db
      - chrome #← Hinzufügen
    tty: true
    stdin_open: true
  db:
    image: mysql:5.7
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
 #↓ Hinzufügen
  chrome:
    image: selenium/standalone-chrome:latest
    ports:
      - 4444:4444
 #↑ Hinzufügen
volumes:
  db-volume:

2. Einführung von RSpec

Fügen Sie Edelstein von rspec-Schienen hinzu

Gemfile


group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails', '~> 4.0.1'  #hinzufügen
  gem 'factory_bot_rails', '~>4.11'
end

Installieren Sie gem.

$ docker-compose build

RSpec-Installation

$ docker-compose run web rails g rspec:install

Beschreiben Sie als Nächstes die Einstellungen in "rails_helper.rb" in der durch die Installation erstellten Datei. Stellen Sie ein, dass beim Ausführen von RSpec der Browser des Docker-Selen-Containers verwendet wird.

/spec/rails_helper.rb


#~
Capybara.register_driver :remote_chrome do |app|
  url = "http://chrome:4444/wd/hub"
  caps = ::Selenium::WebDriver::Remote::Capabilities.chrome(
    "goog:chromeOptions" => {
      "args" => [
        "no-sandbox",
        "headless",
        "disable-gpu",
        "window-size=1680,1050"
      ]
    }
  )
  Capybara::Selenium::Driver.new(app, browser: :remote, url: url, desired_capabilities: caps)
end

#~

RSpec.configure do |config|
  
  config.before(:each, type: :system) do
    driven_by :rack_test
  end

  config.before(:each, type: :system, js: true) do
    driven_by :remote_chrome
    Capybara.server_host = IPSocket.getaddress(Socket.gethostname)
    Capybara.server_port = 4444
    Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
  end
#~
end

Bearbeiten Sie abschließend .rspec, um die Einstellungen in rails_helper.rb zu lesen.

.rspec


- --require spec_helper
+ --require rails_helper

das ist alles.

Schreiben wir nun einen Test und sehen, ob wir den Test ausführen können.

#Wenn der Container startet
$ docker-compose exec web rspec [Pfad der rspec-Testdatei]

Ich konnte die Hardcopy des Browsers überprüfen, als der Test fehlschlug.

スクリーンショット 2020-09-22 22.30.01.png

Recommended Posts

Erstellen Sie eine Browsertestumgebung mit Capybara in der Docker-Entwicklungsumgebung
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
Installieren Sie Ubuntu 20.04 in der virtuellen Box unter Windows 10 und erstellen Sie eine Entwicklungsumgebung mit Docker
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
Einfache Konstruktion der Docker + Django-Entwicklungsumgebung
Verwenden Sie MailHog zum Überprüfen von E-Mails in der Entwicklungsumgebung (mit Docker).
Wir werden eine Spring Framework-Entwicklungsumgebung in der lokalen Umgebung erstellen.
Erstellen Sie eine Entwicklungsumgebung für Docker + Rails6 + Postgresql
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
Einfache Erstellung der Docker Compose + Django-Entwicklungsumgebung
Erstellen Sie eine Entwicklungsumgebung für Docker, Java und Code
Erstellen Sie die Entwicklungsumgebung von Docker + Laravel PHP + Vue.j in 5 Minuten
Ich habe versucht, die Umgebung nach und nach mit Docker aufzubauen
Erstellen Sie mit Docker eine Node.js-Umgebung
Erstellen Sie eine Unity-Entwicklungsumgebung auf Docker
Erstellen Sie mit Docker Compose eine Entwicklungsumgebung für Django + MySQL + nginx
Richten Sie eine Wordpress Docker-Umgebung ein, ohne das Worpdress-Image zu verwenden
Erstellen Sie mit Docker schnell eine Webumgebung
Erstellen einer Lambda-Entwicklungsumgebung mit Eclipse
Erstellen Sie eine WAS-Ausführungsumgebung aus Docker
Erstellen Sie eine Java-Entwicklungsumgebung auf dem Mac
Erstellen eines Servlets in der Liberty-Umgebung
Erstellen Sie eine Ultra96v2-Entwicklungsumgebung auf Docker 1
Erstellen Sie mit Docker eine Umgebung für "API-Entwicklung + API-Überprüfung mithilfe der Swagger-Benutzeroberfläche"
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials (Rails 6 + PostgreSQL + Webpack)
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
Vorlage: Erstellen Sie eine Ruby / Rails-Entwicklungsumgebung mit einem Docker-Container (Ubuntu-Version).
Vorlage: Erstellen Sie eine Ruby / Rails-Entwicklungsumgebung mit einem Docker-Container (Mac-Version).
Erstellen Sie eine Doker-basierte Entwicklungsumgebung unter Windows 10 Home 2020 Version 2 VS Code sollte die Docker-Entwicklungsumgebung komfortabel gestalten
Erstellen eines Testflusses auf CircleCI mit Jib
Verbessern Sie die Leistung der Docker-Entwicklungsumgebung
[Win10] Erstellen Sie eine JSF-Entwicklungsumgebung mit NetBeans
Zeigen Sie "Hello World" im Browser mit Java an
Ermöglichen Sie die Entwicklung in einer Eclipse-Umgebung mit dem iPLAss SDK
Zeigen Sie "Hello World" im Browser mit Java an
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Erstellen einer Doker-basierten Entwicklungsumgebung unter Windows 10 Home 2020 Version 1 Bis WSL2-basierte Docker-Konstruktion
[Hinweis] Java-Programm in integrierter Entwicklungsumgebung ausführen Eclipse-I hat versucht, git zu verwenden
Führen Sie Docker in die Entwicklungs- und Testumgebung vorhandener Rails- und MySQL-Apps ein
Erstellen Sie eine Entwicklungsumgebung, um Ruby on Jets + React-Apps mit Docker zu erstellen
Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden
[Road_node.js_1-1] Der Weg zum Erstellen der Node.js Express MySQL-Umgebung mit Docker
Erstellen Sie eine Ruby on Rails-Entwicklungsumgebung in AWS Cloud9
Ich bin gestolpert, als ich versucht habe, neo4j in der jenv-Umgebung zu verwenden. Machen Sie sich also eine Notiz
[Rails] [Docker] Kopieren und Einfügen ist in Ordnung! So erstellen Sie eine Rails-Entwicklungsumgebung mit Docker