diff options
author | romangraef <romangraef@users.noreply.github.com> | 2021-08-12 23:08:49 +0000 |
---|---|---|
committer | romangraef <romangraef@users.noreply.github.com> | 2021-08-12 23:08:49 +0000 |
commit | 2d930ff2584477b3c7ecda22110ae021db1a7767 (patch) | |
tree | 895b8bbb46a82aebf35b5a05d4deecaec0a52f0c /2/plugins | |
download | webos-2d930ff2584477b3c7ecda22110ae021db1a7767.tar.gz webos-2d930ff2584477b3c7ecda22110ae021db1a7767.tar.bz2 webos-2d930ff2584477b3c7ecda22110ae021db1a7767.zip |
Automated deployment: Thu Aug 12 23:08:49 UTC 2021 62d3fcb7500e623b8c4a1b79c2e271121c3ce794
Diffstat (limited to '2/plugins')
-rw-r--r-- | 2/plugins/behaviors/index.js | 178 | ||||
-rw-r--r-- | 2/plugins/packages/index.js | 104 | ||||
-rw-r--r-- | 2/plugins/screen-diff/index.js | 200 | ||||
-rw-r--r-- | 2/plugins/screen-diff/styles.css | 30 |
4 files changed, 512 insertions, 0 deletions
diff --git a/2/plugins/behaviors/index.js b/2/plugins/behaviors/index.js new file mode 100644 index 0000000..ecde54e --- /dev/null +++ b/2/plugins/behaviors/index.js @@ -0,0 +1,178 @@ +'use strict';
+
+allure.api.addTranslation('en', {
+ tab: {
+ behaviors: {
+ name: 'Behaviors'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'Features by stories',
+ showAll: 'show all'
+ }
+ }
+});
+
+allure.api.addTranslation('ru', {
+ tab: {
+ behaviors: {
+ name: 'Функциональность'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'Функциональность',
+ showAll: 'показать все'
+ }
+ }
+});
+
+allure.api.addTranslation('zh', {
+ tab: {
+ behaviors: {
+ name: '功能'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: '特性场景',
+ showAll: '显示所有'
+ }
+ }
+});
+
+allure.api.addTranslation('de', {
+ tab: {
+ behaviors: {
+ name: 'Verhalten'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'Features nach Stories',
+ showAll: 'Zeige alle'
+ }
+ }
+});
+
+allure.api.addTranslation('nl', {
+ tab: {
+ behaviors: {
+ name: 'Functionaliteit'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'Features en story’s',
+ showAll: 'Toon alle'
+ }
+ }
+});
+
+allure.api.addTranslation('he', {
+ tab: {
+ behaviors: {
+ name: 'התנהגויות'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'תכונות לפי סיפורי משתמש',
+ showAll: 'הצג הכול'
+ }
+ }
+});
+
+allure.api.addTranslation('br', {
+ tab: {
+ behaviors: {
+ name: 'Comportamentos'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'Funcionalidades por história',
+ showAll: 'Mostrar tudo'
+ }
+ }
+});
+
+allure.api.addTranslation('ja', {
+ tab: {
+ behaviors: {
+ name: '振る舞い'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'ストーリー別の機能',
+ showAll: '全て表示'
+ }
+ }
+});
+
+allure.api.addTranslation('es', {
+ tab: {
+ behaviors: {
+ name: 'Funcionalidades'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'Funcionalidades por Historias de Usuario',
+ showAll: 'mostrar todo'
+ }
+ }
+});
+
+allure.api.addTranslation('kr', {
+ tab: {
+ behaviors: {
+ name: '동작'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: '스토리별 기능',
+ showAll: '전체 보기'
+ }
+ }
+});
+
+allure.api.addTranslation('fr', {
+ tab: {
+ behaviors: {
+ name: 'Comportements'
+ }
+ },
+ widget: {
+ behaviors: {
+ name: 'Thèmes par histoires',
+ showAll: 'Montrer tout'
+ }
+ }
+});
+
+allure.api.addTab('behaviors', {
+ title: 'tab.behaviors.name', icon: 'fa fa-list',
+ route: 'behaviors(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
+ onEnter: (function (testGroup, testResult, testResultTab) {
+ return new allure.components.TreeLayout({
+ testGroup: testGroup,
+ testResult: testResult,
+ testResultTab: testResultTab,
+ tabName: 'tab.behaviors.name',
+ baseUrl: 'behaviors',
+ url: 'data/behaviors.json',
+ csvUrl: 'data/behaviors.csv'
+ });
+ })
+});
+
+allure.api.addWidget('widgets', 'behaviors', allure.components.WidgetStatusView.extend({
+ rowTag: 'a',
+ title: 'widget.behaviors.name',
+ baseUrl: 'behaviors',
+ showLinks: true
+}));
diff --git a/2/plugins/packages/index.js b/2/plugins/packages/index.js new file mode 100644 index 0000000..03964b4 --- /dev/null +++ b/2/plugins/packages/index.js @@ -0,0 +1,104 @@ +'use strict';
+
+allure.api.addTranslation('en', {
+ tab: {
+ packages: {
+ name: 'Packages'
+ }
+ }
+});
+
+allure.api.addTranslation('ru', {
+ tab: {
+ packages: {
+ name: 'Пакеты'
+ }
+ }
+});
+
+allure.api.addTranslation('zh', {
+ tab: {
+ packages: {
+ name: '包'
+ }
+ }
+});
+
+allure.api.addTranslation('de', {
+ tab: {
+ packages: {
+ name: 'Pakete'
+ }
+ }
+});
+
+allure.api.addTranslation('nl', {
+ tab: {
+ packages: {
+ name: 'Packages'
+ }
+ }
+});
+
+allure.api.addTranslation('he', {
+ tab: {
+ packages: {
+ name: 'חבילות'
+ }
+ }
+});
+
+allure.api.addTranslation('br', {
+ tab: {
+ packages: {
+ name: 'Pacotes'
+ }
+ }
+});
+
+allure.api.addTranslation('ja', {
+ tab: {
+ packages: {
+ name: 'パッケージ'
+ }
+ }
+});
+
+allure.api.addTranslation('es', {
+ tab: {
+ packages: {
+ name: 'Paquetes'
+ }
+ }
+});
+
+allure.api.addTranslation('kr', {
+ tab: {
+ packages: {
+ name: '패키지'
+ }
+ }
+});
+
+allure.api.addTranslation('fr', {
+ tab: {
+ packages: {
+ name: 'Paquets'
+ }
+ }
+});
+
+allure.api.addTab('packages', {
+ title: 'tab.packages.name', icon: 'fa fa-align-left',
+ route: 'packages(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
+ onEnter: (function (testGroup, testResult, testResultTab) {
+ return new allure.components.TreeLayout({
+ testGroup: testGroup,
+ testResult: testResult,
+ testResultTab: testResultTab,
+ tabName: 'tab.packages.name',
+ baseUrl: 'packages',
+ url: 'data/packages.json'
+ });
+ })
+});
diff --git a/2/plugins/screen-diff/index.js b/2/plugins/screen-diff/index.js new file mode 100644 index 0000000..3774f88 --- /dev/null +++ b/2/plugins/screen-diff/index.js @@ -0,0 +1,200 @@ +(function () { + var settings = allure.getPluginSettings('screen-diff', { diffType: 'diff' }); + + function renderImage(src) { + return ( + '<div class="screen-diff__container">' + + '<img class="screen-diff__image" src="' + + src + + '">' + + '</div>' + ); + } + + function findImage(data, name) { + if (data.testStage && data.testStage.attachments) { + var matchedImage = data.testStage.attachments.filter(function (attachment) { + return attachment.name === name; + })[0]; + if (matchedImage) { + return 'data/attachments/' + matchedImage.source; + } + } + return null; + } + + function renderDiffContent(type, diffImage, actualImage, expectedImage) { + if (type === 'diff') { + if (diffImage) { + return renderImage(diffImage); + } + } + if (type === 'overlay' && expectedImage) { + return ( + '<div class="screen-diff__overlay screen-diff__container">' + + '<img class="screen-diff__image" src="' + + expectedImage + + '">' + + '<div class="screen-diff__image-over">' + + '<img class="screen-diff__image" src="' + + actualImage + + '">' + + '</div>' + + '</div>' + ); + } + if (actualImage) { + return renderImage(actualImage); + } + return 'No diff data provided'; + } + + var TestResultView = Backbone.Marionette.View.extend({ + regions: { + subView: '.screen-diff-view', + }, + template: function () { + return '<div class="screen-diff-view"></div>'; + }, + onRender: function () { + var data = this.model.toJSON(); + var testType = data.labels.filter(function (label) { + return label.name === 'testType'; + })[0]; + var diffImage = findImage(data, 'diff'); + var actualImage = findImage(data, 'actual'); + var expectedImage = findImage(data, 'expected'); + if (!testType || testType.value !== 'screenshotDiff') { + return; + } + this.showChildView( + 'subView', + new ScreenDiffView({ + diffImage: diffImage, + actualImage: actualImage, + expectedImage: expectedImage, + }), + ); + }, + }); + var ErrorView = Backbone.Marionette.View.extend({ + templateContext: function () { + return this.options; + }, + template: function (data) { + return '<pre class="screen-diff-error">' + data.error + '</pre>'; + }, + }); + var AttachmentView = Backbone.Marionette.View.extend({ + regions: { + subView: '.screen-diff-view', + }, + template: function () { + return '<div class="screen-diff-view"></div>'; + }, + onRender: function () { + jQuery + .getJSON(this.options.sourceUrl) + .then(this.renderScreenDiffView.bind(this), this.renderErrorView.bind(this)); + }, + renderErrorView: function (error) { + console.log(error); + this.showChildView( + 'subView', + new ErrorView({ + error: error.statusText, + }), + ); + }, + renderScreenDiffView: function (data) { + this.showChildView( + 'subView', + new ScreenDiffView({ + diffImage: data.diff, + actualImage: data.actual, + expectedImage: data.expected, + }), + ); + }, + }); + + var ScreenDiffView = Backbone.Marionette.View.extend({ + className: 'pane__section', + events: function () { + return { + ['click [name="screen-diff-type-' + this.cid + '"]']: 'onDiffTypeChange', + 'mousemove .screen-diff__overlay': 'onOverlayMove', + }; + }, + initialize: function (options) { + this.diffImage = options.diffImage; + this.actualImage = options.actualImage; + this.expectedImage = options.expectedImage; + this.radioName = 'screen-diff-type-' + this.cid; + }, + templateContext: function () { + return { + diffType: settings.get('diffType'), + diffImage: this.diffImage, + actualImage: this.actualImage, + expectedImage: this.expectedImage, + radioName: this.radioName, + }; + }, + template: function (data) { + if (!data.diffImage && !data.actualImage && !data.expectedImage) { + return ''; + } + + return ( + '<h3 class="pane__section-title">Screen Diff</h3>' + + '<div class="screen-diff__content">' + + '<div class="screen-diff__switchers">' + + '<label><input type="radio" name="' + + data.radioName + + '" value="diff"> Show diff</label>' + + '<label><input type="radio" name="' + + data.radioName + + '" value="overlay"> Show overlay</label>' + + '</div>' + + renderDiffContent( + data.diffType, + data.diffImage, + data.actualImage, + data.expectedImage, + ) + + '</div>' + ); + }, + adjustImageSize: function (event) { + var overImage = this.$(event.target); + overImage.width(overImage.width()); + }, + onRender: function () { + const diffType = settings.get('diffType'); + this.$('[name="' + this.radioName + '"][value="' + diffType + '"]').prop( + 'checked', + true, + ); + if (diffType === 'overlay') { + this.$('.screen-diff__image-over img').on('load', this.adjustImageSize.bind(this)); + } + }, + onOverlayMove: function (event) { + var pageX = event.pageX; + var containerScroll = this.$('.screen-diff__container').scrollLeft(); + var elementX = event.currentTarget.getBoundingClientRect().left; + var delta = pageX - elementX + containerScroll; + this.$('.screen-diff__image-over').width(delta); + }, + onDiffTypeChange: function (event) { + settings.save('diffType', event.target.value); + this.render(); + }, + }); + allure.api.addTestResultBlock(TestResultView, { position: 'before' }); + allure.api.addAttachmentViewer('application/vnd.allure.image.diff', { + View: AttachmentView, + icon: 'fa fa-exchange', + }); +})(); diff --git a/2/plugins/screen-diff/styles.css b/2/plugins/screen-diff/styles.css new file mode 100644 index 0000000..6cf2219 --- /dev/null +++ b/2/plugins/screen-diff/styles.css @@ -0,0 +1,30 @@ +.screen-diff__switchers { + margin-bottom: 1em; +} + +.screen-diff__switchers label + label { + margin-left: 1em; +} + +.screen-diff__overlay { + position: relative; + cursor: col-resize; +} + +.screen-diff__container { + overflow-x: auto; +} + +.screen-diff__image-over { + top: 0; + left: 0; + bottom: 0; + background: #fff; + position: absolute; + overflow: hidden; + box-shadow: 2px 0 1px -1px #aaa; +} + +.screen-diff-error { + color: #fd5a3e; +} |