Просмотр исходного кода

Maintenance: Drop getting started browser test in favor of additional DB test seeds.

Dusan Vuckovic 2 лет назад
Родитель
Сommit
20dca5979d

+ 2 - 0
.gitlab/ci/__includes__/job_rules.yml

@@ -12,6 +12,8 @@
   rules:
     - if: $BROWSER_TEST_FILTER
       when: never
+    - if: $JOB_FILTER && $JOB_FILTER !~ /^rspec:integration/
+      when: never
     - if: $CI_COMMIT_REF_NAME =~ /^private/
       allow_failure: true
     - when: on_success

+ 16 - 6
.gitlab/ci/browser/__templates__.yml

@@ -9,12 +9,22 @@
     RAILS_ENV: "production"
     APP_RESTART_CMD: 'bundle exec rake environment zammad:ci:app:restart'
   script:
-    - script/build/test_slice_tests.sh $TEST_SLICE
-    - RAILS_ENV=test bundle exec rake db:create
-    - echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
-    - bundle exec rake zammad:ci:test:start[with_elasticsearch]
-    - echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
-    - bundle exec rails test --fail-fast test/browser --profile
+    - |
+      script/build/test_slice_tests.sh $TEST_SLICE
+      # Tests in the first slice do not expect for the auto wizard to be run.
+      if [ $TEST_SLICE = 1 ]
+      then
+        echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
+        bundle exec rake zammad:ci:test:start[with_elasticsearch]
+        echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
+      else
+        echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_prepare[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:prepare zammad:setup:auto_wizard zammad:ci:app:start"
+        # Deconstruct zammad:ci:test:start command, so it starts the server only after the auto wizard has run.
+        #   This prevents instability due to `ZAMMAD_SETTING_TTL` not kicking in.
+        bundle exec rake zammad:ci:test:prepare[with_elasticsearch] zammad:setup:auto_wizard[contrib/auto_wizard_browser_test.json] zammad:ci:app:start
+        echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_prepare\\r\\e[0K"
+      fi
+      bundle exec rails test --fail-fast test/browser --profile
 
 .template_browser-core_chrome:
   extends:

+ 127 - 0
contrib/auto_wizard_browser_test.json

@@ -0,0 +1,127 @@
+{
+  "Users": [
+    {
+      "login": "admin@example.com",
+      "firstname": "Test Admin",
+      "lastname": "Agent",
+      "email": "admin@example.com",
+      "password": "test"
+    },
+    {
+      "login": "agent1@example.com",
+      "firstname": "Agent 1",
+      "lastname": "Test",
+      "email": "agent1@example.com",
+      "roles": ["Agent"]
+    }
+  ],
+  "Groups": [
+    {
+      "name": "Users",
+      "users": ["admin@example.com", "agent1@example.com"],
+      "signature": "default",
+      "email_address_id": 1
+    }
+  ],
+  "Channels": [
+    {
+      "id": 1,
+      "area": "Email::Notification",
+      "group": "Users",
+      "options": {
+        "outbound": {
+          "adapter": "smtp",
+          "options": {
+            "host": "mail",
+            "user": "zammad@mail.test.dc.zammad.com",
+            "password": "zammad",
+            "port": 25,
+            "domain": "localhost",
+            "enable_starttls_auto": true,
+            "openssl_verify_mode": "none"
+          }
+        }
+      },
+      "preferences": {
+        "online_service_disable": true
+      }
+    },
+    {
+      "id": 2,
+      "area": "Email::Notification",
+      "options": {
+        "outbound": {
+          "adapter": "smtp",
+          "options": {
+            "host": "mail",
+            "port": 25,
+            "start_tls": true,
+            "user": "zammad@mail.test.dc.zammad.com",
+            "password": "zammad",
+            "domain": "mail.test.dc.zammad.com",
+            "enable_starttls_auto": true,
+            "openssl_verify_mode": "none"
+          }
+        }
+      },
+      "preferences": {
+        "online_service_disable": true
+      }
+    },
+    {
+      "id": 3,
+      "area": "Email::Account",
+      "group": "Users",
+      "options": {
+        "inbound": {
+          "adapter": "imap",
+          "options": {
+            "host": "mail",
+            "port": 993,
+            "ssl": true,
+            "user": "zammad@mail.test.dc.zammad.com",
+            "password": "zammad"
+          }
+        },
+        "outbound": {
+          "adapter": "smtp",
+          "options": {
+            "host": "mail",
+            "port": 25,
+            "start_tls": true,
+            "user": "zammad@mail.test.dc.zammad.com",
+            "password": "zammad",
+            "domain": "mail.test.dc.zammad.com",
+            "enable_starttls_auto": true,
+            "openssl_verify_mode": "none"
+          }
+        }
+      }
+    }
+  ],
+  "EmailAddresses": [
+    {
+      "id": 1,
+      "channel_id": 3,
+      "realname": "Some Realname",
+      "email": "zammad@mail.test.dc.zammad.com"
+    }
+  ],
+  "Settings": [
+    {
+      "name": "fqdn",
+      "value": "localhost"
+    },
+    {
+      "name": "organization",
+      "value": "Some Organization"
+    },
+    {
+      "name": "developer_mode",
+      "value": true
+    }
+  ],
+  "TextModuleLocale": {
+    "Locale": "en-us"
+  }
+}

+ 0 - 8
script/build/test_slice_tests.sh

@@ -6,8 +6,6 @@ set -ex
 if [ "$LEVEL" == '1' ]; then
   echo "slicing level 1"
 
-  # no ticket action
-  rm test/browser/aaa_getting_started_test.rb
   cp contrib/auto_wizard_test.json auto_wizard.json
   cp test/integration/aaa_auto_wizard_base_setup_test.rb test/browser/aaa_auto_wizard_base_setup_test.rb
   rm test/browser/abb_one_group_test.rb
@@ -52,7 +50,6 @@ if [ "$LEVEL" == '1' ]; then
 elif [ "$LEVEL" == '2' ]; then
   echo "slicing level 2"
 
-  # test/browser/aaa_getting_started_test.rb
   # test/browser/abb_one_group_test.rb
   rm test/browser/admin_drag_drop_to_new_group_test.rb
   rm test/browser/admin_overview_test.rb
@@ -94,7 +91,6 @@ elif [ "$LEVEL" == '2' ]; then
 elif [ "$LEVEL" == '3' ]; then
   echo "slicing level 3"
 
-  # test/browser/aaa_getting_started_test.rb
   # test/browser/abb_one_group_test.rb
   rm test/browser/admin_drag_drop_to_new_group_test.rb
   rm test/browser/admin_overview_test.rb
@@ -136,7 +132,6 @@ elif [ "$LEVEL" == '3' ]; then
 elif [ "$LEVEL" == '4' ]; then
   echo "slicing level 4"
 
-  # test/browser/aaa_getting_started_test.rb
   # test/browser/abb_one_group_test.rb
   rm test/browser/admin_drag_drop_to_new_group_test.rb
   rm test/browser/admin_overview_test.rb
@@ -219,7 +214,6 @@ elif [ "$LEVEL" == '5' ]; then
 elif [ "$LEVEL" == '6' ]; then
   echo "slicing level 6"
 
-  # test/browser/aaa_getting_started_test.rb
   # test/browser/abb_one_group_test.rb
   rm test/browser/admin_drag_drop_to_new_group_test.rb
   rm test/browser/admin_overview_test.rb
@@ -262,7 +256,6 @@ elif [ "$LEVEL" == '6' ]; then
 elif [ "$LEVEL" == '7' ]; then
   echo "slicing level 7"
 
-  # test/browser/aaa_getting_started_test.rb
   # test/browser/abb_one_group_test.rb
   rm test/browser/admin_drag_drop_to_new_group_test.rb
   rm test/browser/admin_overview_test.rb
@@ -305,7 +298,6 @@ elif [ "$LEVEL" == '7' ]; then
 elif [ "$LEVEL" == '8' ]; then
   echo "slicing level 8"
 
-  # test/browser/aaa_getting_started_test.rb
   # test/browser/abb_one_group_test.rb
   rm test/browser/admin_drag_drop_to_new_group_test.rb
   rm test/browser/admin_overview_test.rb

+ 0 - 224
test/browser/aaa_getting_started_test.rb

@@ -1,224 +0,0 @@
-# Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
-
-require 'browser_test_helper'
-
-class AaaGettingStartedTest < TestCase
-  def test_a_getting_started
-    if !ENV['MAIL_ADDRESS'] || !ENV['MAIL_PASS']
-      puts 'NOTICE: Need MAIL_ADDRESS and MAIL_PASS as ENV variables.'
-      return
-    end
-    mailbox_user     = ENV['MAIL_ADDRESS']
-    mailbox_password = ENV['MAIL_PASS']
-
-    @browser = browser_instance
-    location(url: browser_url)
-    watch_for(
-      css:   '.setup.wizard',
-      value: 'Set up a new system',
-    )
-    click(css: '.js-start .btn--primary')
-    watch_for(
-      css:   '.setup.wizard',
-      value: 'admin',
-    )
-    set(
-      css:   '.js-admin input[name="firstname"]',
-      value: 'Test Admin',
-    )
-    set(
-      css:   '.js-admin input[name="lastname"]',
-      value: 'Agent',
-    )
-    set(
-      css:   '.js-admin input[name="email"]',
-      value: 'admin@example.com',
-    )
-    set(
-      css:   '.js-admin input[name="password"]',
-      value: 'TEst1234äöüß',
-    )
-    set(
-      css:   '.js-admin input[name="password_confirm"]',
-      value: 'TEst1234äöüß',
-    )
-    click(css: '.js-admin .btn--success')
-
-    # getting started - base
-    watch_for(
-      css:   '.js-base h2',
-      value: 'Organization',
-    )
-    set(
-      css:   '.js-base input[name="organization"]',
-      value: 'Some Organization',
-    )
-    set(
-      css:   '.js-base input[name="url"]',
-      value: 'some host',
-    )
-    click(
-      css: '.js-base .btn--primary',
-    )
-    watch_for(
-      css:   'body',
-      value: 'A URL looks like this',
-    )
-    set(
-      css:   '.js-base input[name="url"]',
-      value: browser_url.sub(%r{(:\d+)$}, ''), # drop port part
-    )
-    click(
-      css: '.js-base .btn--primary',
-    )
-
-    # getting started - email notification
-    watch_for(
-      css:   '.js-outbound h2',
-      value: 'Email Notification',
-    )
-    location_check(
-      url: '#getting_started/email_notification',
-    )
-
-    select(
-      css:   '.js-outbound select[name="adapter"]',
-      value: 'SMTP - configure your own outgoing SMTP settings',
-    )
-
-    # uses zammad-imap docker container
-    set(
-      css:   '.js-outbound input[name="options::host"]',
-      value: 'mail',
-    )
-
-    set(
-      css:   '.js-outbound input[name="options::user"]',
-      value: mailbox_user,
-    )
-
-    set(
-      css:   '.js-outbound input[name="options::password"]',
-      value: mailbox_password,
-    )
-    click(
-      css: '.js-outbound .btn--primary',
-    )
-
-    # getting started - create email account
-    watch_for(
-      css:   '.js-channel h2',
-      value: 'Connect Channels',
-    )
-    location_check(
-      url: '#getting_started/channel',
-    )
-    click(
-      css: '.js-channel .email .provider_name',
-    )
-    set(
-      css:   '.js-intro input[name="realname"]',
-      value: 'Some Realname',
-    )
-    set(
-      css:   '.js-intro input[name="email"]',
-      value: mailbox_user,
-    )
-    set(
-      css:   '.js-intro input[name="password"]',
-      value: mailbox_password,
-    )
-    click(
-      css: '.js-intro .btn--primary',
-    )
-    watch_for(
-      css:     'body',
-      value:   'verify',
-      timeout: 20,
-    )
-    watch_for(
-      css:     'body',
-      value:   'invite',
-      timeout: 100,
-    )
-
-    # invite agent1
-    location_check(
-      url: '#getting_started/agents',
-    )
-    watch_for(
-      css: '.js-agent input[name="firstname"]',
-    )
-    set(
-      css:   '.js-agent input[name="firstname"]',
-      value: 'Agent 1',
-    )
-    set(
-      css:   '.js-agent input[name="lastname"]',
-      value: 'Test',
-    )
-    set(
-      css:   '.js-agent input[name="email"]',
-      value: 'agent1@example.com',
-    )
-    # not needed since we hide group selections if only one group exists
-    # click(
-    #  css: '.js-agent input[name="group_ids"][value="1"]',
-    # )
-    check(css: '.js-agent .js-groupListItem[value=full]')
-    watch_for(
-      css: '.js-agent .js-groupListItem[value=full]:checked',
-    )
-    click(
-      css: '.js-agent .btn--success',
-    )
-    watch_for(
-      css:   '#notify',
-      value: 'Invitation sent',
-    )
-    location_check(
-      url: '#getting_started/agents',
-    )
-    click(
-      css: '.js-agent .btn--primary',
-    )
-    watch_for(
-      css:   'body',
-      value: 'My Stats',
-    )
-    location_check(
-      url: '#clues',
-    )
-
-    clues_close(
-      optional: false,
-    )
-
-    # verify organization and fqdn
-    click(
-      css: 'a[href="#manage"]',
-    )
-    click(
-      css: '.content.active a[href="#settings/branding"]',
-    )
-
-    match(
-      css:   '.content.active input[name="organization"]',
-      value: 'Some Organization',
-    )
-    click(
-      css: '.content.active a[href="#settings/system"]',
-    )
-
-    fqdn = nil
-    if browser_url =~ %r{://(.+?)(:.+?|/.+?|)$}
-      fqdn = $1
-    end
-    raise "Unable to get fqdn based on #{browser_url}" if !fqdn
-
-    match(
-      css:   '.content.active input[name="fqdn"]',
-      value: fqdn,
-    )
-  end
-end