diff --git a/.travis.yml b/.travis.yml
index 3cd8a19b..9d4a20c1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -36,4 +36,4 @@ before_script:
script:
- ./bin/atoum
- - ./bin/behat -fprogress --tags='~@user'
+ - ./bin/behat -fprogress --tags='~@user' --no-interaction
diff --git a/i18n/de.xliff b/i18n/de.xliff
new file mode 100644
index 00000000..ca803930
--- /dev/null
+++ b/i18n/de.xliff
@@ -0,0 +1,468 @@
+
+
+
+
+
+
+ (I )start timing now
+
+
+
+ I set basic authentication with :user and :password
+
+
+
+ (I )am on url composed by:
+
+
+
+ (I )click on the :index :element element
+
+
+
+ (I )follow the :index :link link
+
+
+
+ (I )press the :index :button button
+
+
+
+ (I )fill in :field with the current date
+
+
+
+ (I )fill in :field with the current date and modifier :modifier
+
+
+
+ (I )hover :element
+
+
+
+ (I )save the value of :field in the :parameter parameter
+
+
+
+ (I )wait :count second(s) until I see :text
+
+
+
+ (I )should not see :text within :count second(s)
+
+
+
+ (I )wait until I see :text
+
+
+
+ (I )wait :count second(s) until I see :text in the :element element
+
+
+
+ (I )wait :count second(s)
+
+
+
+ (I )wait until I see :text in the :element element
+
+
+
+ (I )wait for :element element
+
+
+
+ (I )wait :count second(s) for :element element
+
+
+
+ \d+) "(?P[^"]*)" in the (?P\d+)(?:st|nd|rd|th) "(?P[^"]*)"$/]]>
+
+
+
+ (I )should see less than :count :element in the :index :parent
+
+
+
+ (I )should see more than :count :element in the :index :parent
+
+
+
+ the element :element should be enabled
+
+
+
+ the element :element should be disabled
+
+
+
+ the :select select box should contain :option
+
+
+
+ the :select select box should not contain :option
+
+
+
+ the :element element should be visible
+
+
+
+ the :element element should not be visible
+
+
+
+ (I )switch to iframe :name
+
+
+
+ (I )switch to frame :name
+
+
+
+ (I )switch to main frame
+
+
+
+ (the )total elapsed time should be :comparison than :expected seconds
+
+
+
+ (the )total elapsed time should be :comparison to :expected seconds
+
+
+
+
+
+ (I )put the file :file into :field
+
+
+
+ (I )execute :command
+
+
+
+ (I )execute :command from project root
+
+
+
+ command should succeed
+
+
+
+ command should fail
+
+
+
+ command should last less than :seconds seconds
+
+
+
+ command should last more than :seconds seconds
+
+
+
+ (I )create the file :filename containing:
+
+
+
+ output should contain :text
+
+
+
+ output should not contain :text
+
+
+
+ output should be:
+
+
+
+ output should not be:
+
+
+
+ print the content of :filename file
+
+
+
+
+
+ the response should be in JSON
+
+
+
+ the response should not be in JSON
+
+
+
+ the JSON node :node should be equal to :text
+
+
+
+ the JSON nodes should be equal to:
+
+
+
+ the JSON node :node should be null
+
+
+
+ the JSON node :node should be true
+
+
+
+ the JSON node :node should be false
+
+
+
+ the JSON node :node should be equal to the string :text
+
+
+
+ the JSON node :node should be equal to the number :number
+
+
+
+ the JSON node :node should have :count element(s)
+
+
+
+ the JSON node :node should contain :text
+
+
+
+ the JSON nodes should contain:
+
+
+
+ the JSON node :node should not contain :text
+
+
+
+ the JSON nodes should not contain:
+
+
+
+ the JSON node :name should exist
+
+
+
+ the JSON node :name should not exist
+
+
+
+ the JSON should be valid according to this schema:
+
+
+
+ the JSON should be valid according to the schema :filename
+
+
+
+ the JSON should be invalid according to the schema :filename
+
+
+
+ the JSON should be equal to:
+
+
+
+ print last JSON response
+
+
+
+
+
+ I send a :method request to :url
+
+
+
+ I send a :method request to :url with parameters:
+
+
+
+ I send a :method request to :url with body:
+
+
+
+ the response should be equal to:
+
+
+
+ the response should be empty
+
+
+
+ the header :name should be equal to :value
+
+
+
+ the header :name should not be equal to :value
+
+
+
+ I add :name header equal to :value
+
+
+
+ the header :name should contain :value
+
+
+
+ the header :name should not contain :value
+
+
+
+ the header :name should not exist
+
+
+
+ the response should be encoded in :encoding
+
+
+
+ the response should expire in the future
+
+
+
+ print last response headers
+
+
+
+ print the corresponding curl command
+
+
+
+
+
+ the columns schema of the :table table should match:
+
+
+
+ (I )should see :count column(s) in the :table table
+
+
+
+ (I )should see :count rows in the :index :table table
+
+
+
+ (I )should see :count row(s) in the :table table
+
+
+
+ the data in the :index row of the :table table should match:
+
+
+
+ the :colIndex column of the :rowIndex row in the :table table should contain :text
+
+
+
+
+
+ (I )put a breakpoint
+
+
+
+ I save a screenshot in :filename
+
+
+
+
+
+ the XML should not use the namespace :namespace
+
+
+
+ the XML should use the namespace :namespace
+
+
+
+ the XML feed should be valid according to its DTD
+
+
+
+ the XML feed should be valid according to the XSD :filename
+
+
+
+ the XML feed should be valid according to this XSD:
+
+
+
+ the XML feed should be valid according to the relax NG schema :filename
+
+
+
+ the XML feed should be valid according to this relax NG schema:
+
+
+
+ the atom feed should be valid
+
+
+
+ the RSS2 feed should be valid
+
+
+
+ print last XML response
+
+
+
+ the XML attribute :attribute on element :element should be equal to :text
+
+
+
+ the XML attribute :attribute on element :element should not be equal to :text
+
+
+
+ the XML attribute :attribute on element :element should exist(s)
+
+
+
+ the XML attribute :attribute on element :element should not exist(s)
+
+
+
+ the XML element :element should be equal to :text
+
+
+
+ the XML element :element should not be equal to :text
+
+
+
+ the XML element :element should contain :text
+
+
+
+ the XML element :element should not contain :text
+
+
+
+ the XML element :element should exist(s)
+
+
+
+ the XML element :element should not exist(s)
+
+
+
+ the XML element :element should have :count element(s)
+
+
+
+ the response should be in XML
+
+
+
+ the response should not be in XML
+
+
+
+
+
diff --git a/i18n/en.xliff.dist b/i18n/en.xliff.dist
index 064f58c8..ad092dfe 100644
--- a/i18n/en.xliff.dist
+++ b/i18n/en.xliff.dist
@@ -3,6 +3,10 @@
+
+ (I )start timing now
+
+ I set basic authentication with :user and :password
@@ -43,6 +47,10 @@
(I )wait :count second(s) until I see :text
+
+ (I )should not see :text within :count second(s)
+
+ (I )wait until I see :text
@@ -51,6 +59,10 @@
(I )wait :count second(s) until I see :text in the :element element
+
+ (I )wait :count second(s)
+
+ (I )wait until I see :text in the :element element
@@ -63,10 +75,6 @@
(I )wait :count second(s) for :element element
-
- (I )wait :count second(s)
-
- \d+) "(?P[^"]*)" in the (?P\d+)(?:st|nd|rd|th) "(?P[^"]*)"$/]]>
@@ -79,14 +87,14 @@
(I )should see more than :count :element in the :index :parent
-
- the element :element should be disabled
-
- the element :element should be enabled
+
+ the element :element should be disabled
+
+ the :select select box should contain :option
@@ -115,6 +123,14 @@
(I )switch to main frame
+
+ (the )total elapsed time should be :comparison than :expected seconds
+
+
+
+ (the )total elapsed time should be :comparison to :expected seconds
+
+
@@ -277,10 +293,14 @@
the response should be empty
-
+ the header :name should be equal to :value
+
+ the header :name should not be equal to :value
+
+ I add :name header equal to :value
diff --git a/i18n/es.xliff b/i18n/es.xliff
new file mode 100644
index 00000000..1cb89e2d
--- /dev/null
+++ b/i18n/es.xliff
@@ -0,0 +1,468 @@
+
+
+
+
+
+
+ (I )start timing now
+
+
+
+ I set basic authentication with :user and :password
+
+
+
+ (I )am on url composed by:
+
+
+
+ (I )click on the :index :element element
+
+
+
+ (I )follow the :index :link link
+
+
+
+ (I )press the :index :button button
+
+
+
+ (I )fill in :field with the current date
+
+
+
+ (I )fill in :field with the current date and modifier :modifier
+
+
+
+ (I )hover :element
+
+
+
+ (I )save the value of :field in the :parameter parameter
+
+
+
+ (I )wait :count second(s) until I see :text
+
+
+
+ (I )should not see :text within :count second(s)
+
+
+
+ (I )wait until I see :text
+
+
+
+ (I )wait :count second(s) until I see :text in the :element element
+
+
+
+ (I )wait :count second(s)
+
+
+
+ (I )wait until I see :text in the :element element
+
+
+
+ (I )wait for :element element
+
+
+
+ (I )wait :count second(s) for :element element
+
+
+
+ \d+) "(?P[^"]*)" in the (?P\d+)(?:st|nd|rd|th) "(?P[^"]*)"$/]]>
+
+
+
+ (I )should see less than :count :element in the :index :parent
+
+
+
+ (I )should see more than :count :element in the :index :parent
+
+
+
+ the element :element should be enabled
+
+
+
+ the element :element should be disabled
+
+
+
+ the :select select box should contain :option
+
+
+
+ the :select select box should not contain :option
+
+
+
+ the :element element should be visible
+
+
+
+ the :element element should not be visible
+
+
+
+ (I )switch to iframe :name
+
+
+
+ (I )switch to frame :name
+
+
+
+ (I )switch to main frame
+
+
+
+ (the )total elapsed time should be :comparison than :expected seconds
+
+
+
+ (the )total elapsed time should be :comparison to :expected seconds
+
+
+
+
+
+ (I )put the file :file into :field
+
+
+
+ (I )execute :command
+
+
+
+ (I )execute :command from project root
+
+
+
+ command should succeed
+
+
+
+ command should fail
+
+
+
+ command should last less than :seconds seconds
+
+
+
+ command should last more than :seconds seconds
+
+
+
+ (I )create the file :filename containing:
+
+
+
+ output should contain :text
+
+
+
+ output should not contain :text
+
+
+
+ output should be:
+
+
+
+ output should not be:
+
+
+
+ print the content of :filename file
+
+
+
+
+
+ the response should be in JSON
+
+
+
+ the response should not be in JSON
+
+
+
+ the JSON node :node should be equal to :text
+
+
+
+ the JSON nodes should be equal to:
+
+
+
+ the JSON node :node should be null
+
+
+
+ the JSON node :node should be true
+
+
+
+ the JSON node :node should be false
+
+
+
+ the JSON node :node should be equal to the string :text
+
+
+
+ the JSON node :node should be equal to the number :number
+
+
+
+ the JSON node :node should have :count element(s)
+
+
+
+ the JSON node :node should contain :text
+
+
+
+ the JSON nodes should contain:
+
+
+
+ the JSON node :node should not contain :text
+
+
+
+ the JSON nodes should not contain:
+
+
+
+ the JSON node :name should exist
+
+
+
+ the JSON node :name should not exist
+
+
+
+ the JSON should be valid according to this schema:
+
+
+
+ the JSON should be valid according to the schema :filename
+
+
+
+ the JSON should be invalid according to the schema :filename
+
+
+
+ the JSON should be equal to:
+
+
+
+ print last JSON response
+
+
+
+
+
+ I send a :method request to :url
+
+
+
+ I send a :method request to :url with parameters:
+
+
+
+ I send a :method request to :url with body:
+
+
+
+ the response should be equal to:
+
+
+
+ the response should be empty
+
+
+
+ the header :name should be equal to :value
+
+
+
+ the header :name should not be equal to :value
+
+
+
+ I add :name header equal to :value
+
+
+
+ the header :name should contain :value
+
+
+
+ the header :name should not contain :value
+
+
+
+ the header :name should not exist
+
+
+
+ the response should be encoded in :encoding
+
+
+
+ the response should expire in the future
+
+
+
+ print last response headers
+
+
+
+ print the corresponding curl command
+
+
+
+
+
+ the columns schema of the :table table should match:
+
+
+
+ (I )should see :count column(s) in the :table table
+
+
+
+ (I )should see :count rows in the :index :table table
+
+
+
+ (I )should see :count row(s) in the :table table
+
+
+
+ the data in the :index row of the :table table should match:
+
+
+
+ the :colIndex column of the :rowIndex row in the :table table should contain :text
+
+
+
+
+
+ (I )put a breakpoint
+
+
+
+ I save a screenshot in :filename
+
+
+
+
+
+ the XML should not use the namespace :namespace
+
+
+
+ the XML should use the namespace :namespace
+
+
+
+ the XML feed should be valid according to its DTD
+
+
+
+ the XML feed should be valid according to the XSD :filename
+
+
+
+ the XML feed should be valid according to this XSD:
+
+
+
+ the XML feed should be valid according to the relax NG schema :filename
+
+
+
+ the XML feed should be valid according to this relax NG schema:
+
+
+
+ the atom feed should be valid
+
+
+
+ the RSS2 feed should be valid
+
+
+
+ print last XML response
+
+
+
+ the XML attribute :attribute on element :element should be equal to :text
+
+
+
+ the XML attribute :attribute on element :element should not be equal to :text
+
+
+
+ the XML attribute :attribute on element :element should exist(s)
+
+
+
+ the XML attribute :attribute on element :element should not exist(s)
+
+
+
+ the XML element :element should be equal to :text
+
+
+
+ the XML element :element should not be equal to :text
+
+
+
+ the XML element :element should contain :text
+
+
+
+ the XML element :element should not contain :text
+
+
+
+ the XML element :element should exist(s)
+
+
+
+ the XML element :element should not exist(s)
+
+
+
+ the XML element :element should have :count element(s)
+
+
+
+ the response should be in XML
+
+
+
+ the response should not be in XML
+
+
+
+
+
diff --git a/i18n/fr.xliff b/i18n/fr.xliff
index dcead5cf..3b4af42b 100644
--- a/i18n/fr.xliff
+++ b/i18n/fr.xliff
@@ -3,6 +3,10 @@
+
+ (I )start timing now
+ (Je )démarre le compteur de temps maintenant
+
@@ -17,7 +21,11 @@
-
+
+
+
+ (I )press the :index :button button
+ (Je )presse le :index :button bouton
@@ -39,6 +47,10 @@
+
+ (I )should not see :text within :count second(s)
+ (Je )ne devrais pas voir :text durant :count seconde(s)
+
@@ -47,6 +59,10 @@
\d+) secondes? de voir :text dans l'élément (?P
+
+ (I )wait :count second(s)
+ (J')attends :count seconde(s)
+
@@ -59,10 +75,6 @@
-
-
-
- \d+) "(?P[^"]*)" in the (?P\d+)(?:st|nd|rd|th) "(?P[^"]*)"$/]]>\d+) "(?P[^"]*)" dans le (?P\d+)(?:er|nd|ième) "(?P[^"]*)"$/]]>
@@ -75,14 +87,14 @@
-
-
-
-
+
+
+
+
@@ -111,6 +123,14 @@
+
+ (the )total elapsed time should be :comparison than :expected seconds
+ (le )temps total écoulé devrait être :comparaison que :expected secondes
+
+
+ (the )total elapsed time should be :comparison to :expected seconds
+
+
@@ -265,10 +285,14 @@
-
+
+
+ the header :name should not be equal to :value
+ l'entête :name ne derait pas être égale à :value
+
diff --git a/i18n/ja.xliff b/i18n/ja.xliff
index 7e471663..4c98dc6d 100644
--- a/i18n/ja.xliff
+++ b/i18n/ja.xliff
@@ -3,6 +3,10 @@
+
+ (I )start timing now
+
+ [^"]*)"と"(?P[^"]*)"で設定する$/u]]>
@@ -39,6 +43,10 @@
[^"]*)"を見るまで(?P\d+)秒間?待つ$/u]]>
+
+ (I )should not see :text within :count second(s)
+
+ [^"]*)"を見るまで待つ$/u]]>
@@ -47,6 +55,10 @@
[^"]*)"要素(?:で|に)"(?P[^"]*)"を見るまで(?P\d+)秒間?待つ$/u]]>
+
+
+ \d+)秒間?待つ$/u]]>
+ [^"]*)"要素(?:で|に)"(?P[^"]*)"を見るまで待つ$/u]]>
@@ -59,10 +71,6 @@
-
-
- \d+)秒間?待つ$/u]]>
- \d+) "(?P[^"]*)" in the (?P\d+)(?:st|nd|rd|th) "(?P[^"]*)"$/]]>\d+)番目の"(?P[^"]*)"(?:|要素)が(?P\d+)個の"(?P[^"]*)"(?:|要素)を持つこと$/u]]>
@@ -75,14 +83,14 @@
\d+)番目の"(?P[^"]*)"(?:|要素)が(?P\d+)個以上の"(?P[^"]*)"(?:|要素)を持つこと$/u]]>
-
-
- [^"]*)"(?:|要素)が無効であること$/u]]>
- [^"]*)"(?:|要素)が有効であること$/u]]>
+
+
+ [^"]*)"(?:|要素)が無効であること$/u]]>
+ [^"]*)"は"(?P
@@ -111,6 +119,14 @@
+
+ (the )total elapsed time should be :comparison than :expected seconds
+
+
+
+ (the )total elapsed time should be :comparison to :expected seconds
+
+
@@ -204,10 +220,14 @@
-
+ [^"]*)"ヘッダが"(?P[^"]*)"と一致すること$/u]]>
+
+ the header :name should not be equal to :value
+
+ [^"]*)"ヘッダに"(?P[^"]*)"を追加する$/u]]>
diff --git a/i18n/pt.xliff b/i18n/pt.xliff
index 306d9b3d..9368ee0b 100644
--- a/i18n/pt.xliff
+++ b/i18n/pt.xliff
@@ -3,6 +3,10 @@
+
+ (I )start timing now
+
+
@@ -39,6 +43,10 @@
+
+ (I )should not see :text within :count second(s)
+
+
@@ -47,6 +55,10 @@
+
+
+
+
@@ -59,10 +71,6 @@
-
-
-
- \d+) "(?P[^"]*)" in the (?P\d+)(?:st|nd|rd|th) "(?P[^"]*)"$/]]>\d+) "(?P[^"]*)" no (?P\d+)(?:º) "(?P[^"]*)"$/]]>
@@ -75,14 +83,14 @@
\d+) "(?P[^"]*)" no (?P\d+)(?:º) "(?P[^"]*)"$/]]>
-
-
-
-
+
+
+
+
@@ -111,6 +119,14 @@
+
+ (the )total elapsed time should be :comparison than :expected seconds
+
+
+
+ (the )total elapsed time should be :comparison to :expected seconds
+
+
@@ -273,10 +289,14 @@
-
+
+
+ the header :name should not be equal to :value
+
+
diff --git a/tests/features/fr/browser.feature b/tests/features/fr/browser.feature
index d2ebb72b..4ad46f74 100644
--- a/tests/features/fr/browser.feature
+++ b/tests/features/fr/browser.feature
@@ -29,7 +29,10 @@ Fonctionnalité:
@javascript
Scénario:
- Étant donné je suis sur "/browser/elements.html"
+ Étant donné je suis sur une url composée par:
+ | parameters |
+ | /browser |
+ | /elements.html |
Alors je devrais voir 4 "div" dans le 1er "body"
Et je devrais voir moins de 6 "div" dans le 1er "body"
Et je devrais voir plus de 2 "div" dans le 1er "body"
@@ -37,6 +40,10 @@ Fonctionnalité:
Et la liste de sélection "months_selector" devrait contenir "january"
Quand je clique sur le 1er élément "ul li"
Alors je devrais voir "You clicked First"
+ Quand je presse le 2nd "Submit" bouton
+ Alors je devrais voir "You clicked Second BUTTON"
+ Quand je suis le 1ier "Second" lien
+ Alors je devrais voir "You clicked Second A"
@javascript
Scénario:
@@ -52,13 +59,42 @@ Fonctionnalité:
@javascript
Scénario:
Étant donnée je vais sur "/browser/timeout.html"
- Alors j'attends 3 secondes de voir "timeout"
+ Quand j'attends 3 secondes de voir "timeout"
Et j'attends 1 seconde
Et j'attends l'élément "#iframe"
Et j'attends 5 secondes l'élément "#iframe"
+ Alors le temps total écoulé devrait être "more" que 3 secondes
@javascript
Scénario:
- Étant donnée je suis sur "/browser/index.html"
+ Étant donné je suis sur "/browser/timeout.html"
+ Alors je ne devrais pas voir "timeout"
+ Quand j'attends 3 secondes de voir "timeout"
+ Alors je devrais voir "timeout"
+
+ Scénario:
+ Étant donné je suis sur "/browser/index.html"
+ Alors je ne devrais pas voir "foobar" durant 1 seconde
+
+ @javascript
+ Scénario:
+ Étant donné je suis sur "/browser/index.html"
Alors l'élément "#visible-element" devrait être visible
Et l'élément "#hidden-element" ne devrait pas être visible
+
+ @javascript
+ Scénario:
+ Étant donné je suis sur "/browser/elements.html"
+ Alors je remplis "today" avec la date actuelle
+ Et je remplis "today" avec la date actuelle et modificateur "-1 day"
+
+ Scénario:
+ Étant donné je suis sur "/browser/elements.html"
+ Alors je sauvegarde la valeur de "today" dans le paramètre "today"
+
+ Scénario:
+ Étant donnée je suis sur "/browser/index.html"
+ Et j'attends 1.9 seconde
+ Et j'attends 1.9 seconde
+ Et j'attends 1.9 seconde
+ Alors le temps total écoulé devrait être "more" que 4 secondes