From 9529d318c284fc153b4edba9c24b428e57395b95 Mon Sep 17 00:00:00 2001
From: AleksLi <aleksliwork@gmail.com>
Date: Sun, 17 Feb 2019 19:32:44 +0100
Subject: [PATCH 1/3] magento/magento2#12396: Total Amount cart rule without
 tax - Added new condition type to give user opportunity to choose the
 configuration.

---
 app/code/Magento/SalesRule/Model/Rule/Condition/Address.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/app/code/Magento/SalesRule/Model/Rule/Condition/Address.php b/app/code/Magento/SalesRule/Model/Rule/Condition/Address.php
index fd5953697c7db..96867222d170a 100644
--- a/app/code/Magento/SalesRule/Model/Rule/Condition/Address.php
+++ b/app/code/Magento/SalesRule/Model/Rule/Condition/Address.php
@@ -58,6 +58,7 @@ public function __construct(
     public function loadAttributeOptions()
     {
         $attributes = [
+            'base_subtotal_with_discount' => __('Subtotal (Excl. Tax)'),
             'base_subtotal' => __('Subtotal'),
             'total_qty' => __('Total Items Quantity'),
             'weight' => __('Total Weight'),

From 362bbf239373ed70d11da43b04a861b76e5d4190 Mon Sep 17 00:00:00 2001
From: nmalevanec <mikola.malevanec@transoftgroup.com>
Date: Fri, 15 Mar 2019 13:39:25 +0200
Subject: [PATCH 2/3] Fix functional tests.

---
 .../Mtf/Client/Element/ConditionsElement.php  |  2 +-
 .../Client/Element/SelectconditionElement.php | 20 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php

diff --git a/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php b/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php
index 6dbf2b1aa6a12..f532b12c61492 100644
--- a/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php
+++ b/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php
@@ -285,7 +285,7 @@ protected function addCondition($type, ElementInterface $context)
             $newCondition->find($this->addNew, Locator::SELECTOR_XPATH)->click();
 
             try {
-                $newCondition->find($this->typeNew, Locator::SELECTOR_XPATH, 'select')->setValue($type);
+                $newCondition->find($this->typeNew, Locator::SELECTOR_XPATH, 'selectcondition')->setValue($type);
                 $isSetType = true;
             } catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
                 $isSetType = false;
diff --git a/dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php b/dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php
new file mode 100644
index 0000000000000..1fe096670135d
--- /dev/null
+++ b/dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Copyright © 2017 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+declare(strict_types=1);
+
+namespace Magento\Mtf\Client\Element;
+
+/**
+ * @inheritdoc
+ */
+class SelectconditionElement extends SelectElement
+{
+    /**
+     * @inheritdoc
+     */
+    protected $optionByValue = './/option[normalize-space(.)=%s]';
+}

From a5608f0d6c9c476d18f9dfe59a9053b7fac29393 Mon Sep 17 00:00:00 2001
From: nmalevanec <mikola.malevanec@transoftgroup.com>
Date: Fri, 15 Mar 2019 17:38:44 +0200
Subject: [PATCH 3/3] Fix functional tests.

---
 .../Mtf/Client/Element/ConditionsElement.php  | 19 ++++++++++++++++---
 .../Client/Element/SelectconditionElement.php |  2 +-
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php b/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php
index f532b12c61492..9edd087020a72 100644
--- a/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php
+++ b/dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php
@@ -195,6 +195,13 @@ class ConditionsElement extends SimpleElement
      */
     protected $exception;
 
+    /**
+     * Condition option text selector.
+     *
+     * @var string
+     */
+    private $conditionOptionTextSelector = '//option[normalize-space(text())="%s"]';
+
     /**
      * @inheritdoc
      */
@@ -282,10 +289,16 @@ protected function addCondition($type, ElementInterface $context)
         $count = 0;
 
         do {
-            $newCondition->find($this->addNew, Locator::SELECTOR_XPATH)->click();
-
             try {
-                $newCondition->find($this->typeNew, Locator::SELECTOR_XPATH, 'selectcondition')->setValue($type);
+                $specificType = $newCondition->find(
+                    sprintf($this->conditionOptionTextSelector, $type),
+                    Locator::SELECTOR_XPATH
+                )->isPresent();
+                $newCondition->find($this->addNew, Locator::SELECTOR_XPATH)->click();
+                $condition = $specificType
+                    ? $newCondition->find($this->typeNew, Locator::SELECTOR_XPATH, 'selectcondition')
+                    : $newCondition->find($this->typeNew, Locator::SELECTOR_XPATH, 'select');
+                $condition->setValue($type);
                 $isSetType = true;
             } catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
                 $isSetType = false;
diff --git a/dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php b/dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php
index 1fe096670135d..15a799eac5188 100644
--- a/dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php
+++ b/dev/tests/functional/lib/Magento/Mtf/Client/Element/SelectconditionElement.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */