@@ -75,12 +84,20 @@ export const Step = ({step}: {step: any}) => {
color='red'
onClick={ () => svc.uuiModals.show((props) => ) }
/>}
- {step.embeddings && step.embeddings.map((embedding: any, index: any) => )}
+ {logs.length > 0 && }
+ {step.embeddings && step.embeddings
+ .filter((embedding: any) => embedding.mime_type !== 'text/x.cucumber.log+plain')
+ .map((embedding: any, index: any) => )
+ }
{step.arguments && step.arguments.map((arg: any, index: number) =>
)}
diff --git a/test-e2e/features/Logs.feature b/test-e2e/features/Logs.feature
new file mode 100644
index 0000000..0490d57
--- /dev/null
+++ b/test-e2e/features/Logs.feature
@@ -0,0 +1,17 @@
+Feature: Logs
+
+ Background:
+ Given I open '$reportPage' url
+
+ Scenario Outline: verify that user can open logs ()
+ When I click 'Main > Features Table > #LOGS in Rows > Name'
+ And I click 'Feature > # in Scenarios > Title'
+ And I expect text of 'Feature > # in Scenarios > # in Steps > # of Attachments' to be equal 'Logs'
+ And I click 'Feature > # in Scenarios > # in Steps > # of Attachments'
+ And I expect text of 'Logs Overlay > Title' to be equal 'Logs'
+ And I expect text of 'Logs Overlay > Text' to be equal ''
+
+ Examples:
+ | scenario | step | btn | data |
+ | scenario passed with logs | passed step with log | 1 | some information in passed step\none more log line |
+ | scenario failed with logs | failed step with log | 2 | some information in failed step\nER: expected result\nAR: actual result |
diff --git a/test-e2e/features/MainPage.feature b/test-e2e/features/MainPage.feature
index 9ee7a8f..1cd3c40 100644
--- a/test-e2e/features/MainPage.feature
+++ b/test-e2e/features/MainPage.feature
@@ -14,22 +14,22 @@ Feature: Main Page
Scenario: verify that user can open failed page
When I click 'Header > Failed'
- Then I expect number of elements in 'Failed > Features' collection to be equal '3'
+ Then I expect number of elements in 'Failed > Features' collection to be equal '4'
Scenario: verify that user can filter only failed on main page
When I click 'Main > Show Only Failed'
- Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '3'
+ Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '4'
Scenario: verify that user can filter only failed and search on main page
When I click 'Main > Show Only Failed'
- Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '3'
+ Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '4'
When I type 'feature2' to 'Main > Search'
Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '1'
And I expect text of 'Main > Features Table > #1 of Rows > Name' to be equal 'FEATURE2'
Scenario: verify that filter state is saved
When I click 'Main > Show Only Failed'
- Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '3'
+ Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '4'
When I refresh page
- Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '3'
+ Then I expect number of elements in 'Main > Features Table > Rows' collection to be equal '4'
diff --git a/test-e2e/po/components/Feature.ts b/test-e2e/po/components/Feature.ts
index 84bc011..a4e7592 100644
--- a/test-e2e/po/components/Feature.ts
+++ b/test-e2e/po/components/Feature.ts
@@ -2,8 +2,8 @@ import { $, $$, Component } from '@qavajs/po-playwright';
import Scenario from './Scenario';
export default class Feature extends Component {
- Title = $('.t2Air._2NWkE._16JVi._2LUBH._1S5Yu._1YeLH');
- Scenarios = $$(new Scenario('.LW8md.QQ7Qd.viC1y.XVxPc._3pEr7._2Njnp._2tefK'));
+ Title = $('.FlexRow_root__DtoT7 .Text_root__wYraY.text-layout_font-size-14__zmBoh');
+ Scenarios = $$(new Scenario('[class*=Accordion_container]'));
Search = $('[placeholder="Search"]');
- ShowOnlyFailed = $('._1e-RT._29dT7._2ksiK.-clickable');
+ ShowOnlyFailed = $('[class*=Switch_container]');
}
diff --git a/test-e2e/po/components/FeaturesTable.ts b/test-e2e/po/components/FeaturesTable.ts
index ae97203..6d6cd9b 100644
--- a/test-e2e/po/components/FeaturesTable.ts
+++ b/test-e2e/po/components/FeaturesTable.ts
@@ -1,7 +1,7 @@
import { $, $$, Component } from '@qavajs/po-playwright';
class Row extends Component {
- Name = $('.mcDo6 .P755f .uui-caption');
+ Name = $('a[href*=feature]');
}
export default class FeaturesTable extends Component {
diff --git a/test-e2e/po/components/Header.ts b/test-e2e/po/components/Header.ts
index 639e091..1169e15 100644
--- a/test-e2e/po/components/Header.ts
+++ b/test-e2e/po/components/Header.ts
@@ -1,6 +1,6 @@
import { $, $$, Component } from '@qavajs/po-playwright';
export default class Header extends Component {
- Failed = $('a._2meUz.uui-button-box.uui-enabled.-clickable._1u3-d.GyoMz.z4sy9.uui-no-left-icon.uui-no-right-icon.App_failedTitle__b4CvK');
- Metadata = $('._36Wif + button');
+ Failed = $('a[href*=failed-scenarios]');
+ Metadata = $('button');
}
diff --git a/test-e2e/po/components/LogsOverlay.ts b/test-e2e/po/components/LogsOverlay.ts
new file mode 100644
index 0000000..09339b8
--- /dev/null
+++ b/test-e2e/po/components/LogsOverlay.ts
@@ -0,0 +1,7 @@
+import { $, $$, Component } from '@qavajs/po-playwright';
+import Overlay from './Overlay';
+
+export default class LogsOverlay extends Overlay {
+ Text = $('pre');
+
+}
diff --git a/test-e2e/po/components/Main.ts b/test-e2e/po/components/Main.ts
index 86dbdee..35cfc1c 100644
--- a/test-e2e/po/components/Main.ts
+++ b/test-e2e/po/components/Main.ts
@@ -4,5 +4,5 @@ import FeaturesTable from './FeaturesTable';
export default class Main extends Component {
FeaturesTable = $(new FeaturesTable('.App_features__1Nyen'));
Search = $('[placeholder="Search"]');
- ShowOnlyFailed = $('._1e-RT._29dT7._2ksiK.-clickable');
+ ShowOnlyFailed = $('[class*=Switch_container]');
}
diff --git a/test-e2e/po/components/MetadataOverlay.ts b/test-e2e/po/components/MetadataOverlay.ts
index fdbdfb1..16cb2a2 100644
--- a/test-e2e/po/components/MetadataOverlay.ts
+++ b/test-e2e/po/components/MetadataOverlay.ts
@@ -7,5 +7,5 @@ class Row extends Component {
}
export default class MetadataOverlay extends Overlay {
- Rows = $$(new Row('._30bAc div[role="row"]'));
+ Rows = $$(new Row('[class*=DataTable_listContainer] div[role="row"]'));
}
diff --git a/test-e2e/po/components/Overlay.ts b/test-e2e/po/components/Overlay.ts
index 66273ac..076e71b 100644
--- a/test-e2e/po/components/Overlay.ts
+++ b/test-e2e/po/components/Overlay.ts
@@ -1,6 +1,6 @@
import { $, $$, Component } from '@qavajs/po-playwright';
export default class Overlay extends Component {
- Title = $('.t2Air._2NWkE._16JVi.h-QZx._7sAnq._12oQ-._2khSS');
- X = $('._2meUz.uui-button-box.uui-enabled.-clickable.CsQyo._18biJ');
+ Title = $('[class*=Text_root][class*=text-layout_line-height-24]');
+ X = $('.IconContainer_container__wSE-F');
}
diff --git a/test-e2e/po/components/Scenario.ts b/test-e2e/po/components/Scenario.ts
index 3ec5d58..a2f9dd3 100644
--- a/test-e2e/po/components/Scenario.ts
+++ b/test-e2e/po/components/Scenario.ts
@@ -5,6 +5,6 @@ class Step extends Component {
}
export default class Scenario extends Component {
- Title = $('.uui-accordion-toggler .t2Air._2NWkE._16JVi._2LUBH._30qZ_._1YeLH._2khSS');
+ Title = $('.uui-accordion-toggle-container > div > div');
Steps = $$(new Step('.uui-accordion-body > div'));
}
diff --git a/test-e2e/po/index.ts b/test-e2e/po/index.ts
index a300dbf..bc36eaf 100644
--- a/test-e2e/po/index.ts
+++ b/test-e2e/po/index.ts
@@ -6,12 +6,14 @@ import Header from './components/Header';
import Failed from './components/Failed';
import MetadataOverlay from './components/MetadataOverlay';
import AttachmentOverlay from './components/AttachmentOverlay';
+import LogsOverlay from './components/LogsOverlay';
export default class App {
Main = $(new Main('main'));
Feature = $(new Feature('main'));
Failed = $(new Failed('main'));
- Header = $(new Header('._1USbx._3lNb7'));
+ Header = $(new Header('[class*=MainMenu_root]'));
MetadataOverlay = $(new MetadataOverlay('.uui-modal-window'));
AttachmentOverlay = $(new AttachmentOverlay('.uui-modal-window'));
+ LogsOverlay = $(new LogsOverlay('.uui-modal-window'));
}
diff --git a/test-e2e/test.ts b/test-e2e/test.ts
index 830ef21..50de381 100644
--- a/test-e2e/test.ts
+++ b/test-e2e/test.ts
@@ -21,6 +21,7 @@ const common = {
},
memory: new Memory(),
pageObject: new App(),
+ retry: 1,
publishQuiet: true
};
diff --git a/test/compile_dev.js b/test/compile_dev.js
new file mode 100644
index 0000000..4c43a78
--- /dev/null
+++ b/test/compile_dev.js
@@ -0,0 +1,6 @@
+const fs = require('fs');
+
+const template = fs.readFileSync('./public/index.html', 'utf-8');
+const json = fs.readFileSync('./test/report.json', 'utf-8');
+
+fs.writeFileSync('./public/index.html', template.replace('SOURCE_DATA', json).replace('METADATA', '[]'));
diff --git a/test/compile_report.js b/test/compile_report.js
new file mode 100644
index 0000000..d68f2e6
--- /dev/null
+++ b/test/compile_report.js
@@ -0,0 +1,6 @@
+const fs = require('fs');
+
+const template = fs.readFileSync('./build/index.html', 'utf-8');
+const json = fs.readFileSync('./test/report.json', 'utf-8');
+
+fs.writeFileSync('./test/report.html', template.replace('SOURCE_DATA', json).replace('METADATA', '[]'));
diff --git a/test/compile_report.ts b/test/compile_report.ts
deleted file mode 100644
index 02e469a..0000000
--- a/test/compile_report.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import fs from 'fs';
-
-const template = fs.readFileSync('./build/index.html', 'utf-8');
-const json = fs.readFileSync('./test/report/report.json', 'utf-8');
-
-fs.writeFileSync('./test/report/report.html', template.replace('SOURCE_DATA', json));
diff --git a/test/features/Logs.feature b/test/features/Logs.feature
new file mode 100644
index 0000000..79c50eb
--- /dev/null
+++ b/test/features/Logs.feature
@@ -0,0 +1,7 @@
+Feature: Logs
+
+ Scenario: scenario passed with logs
+ When passed step with log
+
+ Scenario: scenario failed with logs
+ And failed step with log
diff --git a/test/step_definitions/custom_steps.ts b/test/step_definitions/custom_steps.ts
index c460778..3e1830d 100644
--- a/test/step_definitions/custom_steps.ts
+++ b/test/step_definitions/custom_steps.ts
@@ -48,3 +48,15 @@ When('unsupported base64 attachment', function () {
this.attach(require('../attachments/unsupportedBase64').default, 'base64:application/zip');
});
+When('passed step with log', function () {
+ this.log('some information in passed step');
+ this.log('one more log line')
+
+});
+When('failed step with log', function () {
+ this.log('some information in failed step');
+ this.log('ER: expected result');
+ this.log('AR: actual result');
+ throw new Error('failed step');
+});
+