From b3c61fc267d37cb031df4359eb07ecc995909ad7 Mon Sep 17 00:00:00 2001 From: Daniel Silhavy Date: Tue, 27 Aug 2024 14:10:26 +0200 Subject: [PATCH] Feature/smart tv functional test (#4559) * Starting webapp on LG works * First working webOS test execution * Add WebOS testapp files * Working Samsung TV karma test execution * Minor change to smoke tests * Provide config parameters for Tizen runner via config json * Reset command * Remove selenium certs --- .gitignore | 3 + test/functional/apps/tizen/config.xml | 17 ++ test/functional/apps/tizen/css/style.css | 75 +++++++ test/functional/apps/tizen/icon.png | Bin 0 -> 57662 bytes .../functional/apps/tizen/images/tizen_32.png | Bin 0 -> 12848 bytes test/functional/apps/tizen/index.html | 21 ++ test/functional/apps/tizen/js/main.js | 19 ++ .../apps/webos/test-app/appinfo.json | 10 + test/functional/apps/webos/test-app/icon.png | Bin 0 -> 8572 bytes .../functional/apps/webos/test-app/index.html | 52 +++++ .../apps/webos/test-app/largeIcon.png | Bin 0 -> 14326 bytes .../test-app/webOSTVjs-1.2.10/LICENSE-2.0.txt | 202 ++++++++++++++++++ .../test-app/webOSTVjs-1.2.10/webOSTV-dev.js | 1 + .../test-app/webOSTVjs-1.2.10/webOSTV.js | 1 + .../config/karma.functional.conf.cjs | 9 +- test/functional/config/launchers/common.cjs | 15 ++ .../config/launchers/karma-tizen-launcher.cjs | 85 ++++++++ .../config/launchers/karma-webos-launcher.cjs | 64 ++++++ .../streams/smoke_no_drm.json | 156 ++++++++++++++ .../config/test-configurations/tizen.json | 24 +++ .../config/test-configurations/webos.json | 21 ++ 21 files changed, 772 insertions(+), 3 deletions(-) create mode 100644 test/functional/apps/tizen/config.xml create mode 100644 test/functional/apps/tizen/css/style.css create mode 100644 test/functional/apps/tizen/icon.png create mode 100644 test/functional/apps/tizen/images/tizen_32.png create mode 100644 test/functional/apps/tizen/index.html create mode 100644 test/functional/apps/tizen/js/main.js create mode 100644 test/functional/apps/webos/test-app/appinfo.json create mode 100644 test/functional/apps/webos/test-app/icon.png create mode 100644 test/functional/apps/webos/test-app/index.html create mode 100644 test/functional/apps/webos/test-app/largeIcon.png create mode 100644 test/functional/apps/webos/test-app/webOSTVjs-1.2.10/LICENSE-2.0.txt create mode 100644 test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV-dev.js create mode 100644 test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV.js create mode 100644 test/functional/config/launchers/common.cjs create mode 100644 test/functional/config/launchers/karma-tizen-launcher.cjs create mode 100644 test/functional/config/launchers/karma-webos-launcher.cjs create mode 100644 test/functional/config/test-configurations/streams/smoke_no_drm.json create mode 100644 test/functional/config/test-configurations/tizen.json create mode 100644 test/functional/config/test-configurations/webos.json diff --git a/.gitignore b/.gitignore index bb3d913082..02362aac71 100644 --- a/.gitignore +++ b/.gitignore @@ -196,3 +196,6 @@ test/unit/results # Karma Functional tests test/functional/results test/functional/config/selenium/jars +/samples/custom/ +/samples/modules/webpack/package-lock.json +/test/functional/apps/webos/test-app/com.dashjs.app_1.0.0_all.ipk diff --git a/test/functional/apps/tizen/config.xml b/test/functional/apps/tizen/config.xml new file mode 100644 index 0000000000..c645414a4b --- /dev/null +++ b/test/functional/apps/tizen/config.xml @@ -0,0 +1,17 @@ + + + + + + + + + dashjs + + + + + + + + diff --git a/test/functional/apps/tizen/css/style.css b/test/functional/apps/tizen/css/style.css new file mode 100644 index 0000000000..12d6cb4448 --- /dev/null +++ b/test/functional/apps/tizen/css/style.css @@ -0,0 +1,75 @@ +* { + font-family: Lucida Sans, Arial, Helvetica, sans-serif; +} + +body { + margin: 50px auto; + background-color: #ffffff; +} + +header h1 { + font-size: 108px; + margin: 0px; +} + +header h2 { + font-size: 54px; + margin: 0px; + color: #888; + font-style: italic; +} + +nav ul { + list-style: none; + padding: 20px; + display: block; + clear: right; + background-color: #666; + padding-left: 4px; + height: 48px; +} + +nav ul li { + display: inline; + padding: 0px 20px 5px 10px; + border-right: 1px solid #ccc; +} + +nav ul li a { + color: #EFD3D3; + text-decoration: none; + font-size: 39px; + font-weight: bold; +} + +nav ul li a:hover { + color: #fff; +} + +article > header h1 { + font-size: 60px; + margin-left: 14px; +} + +article > header h1 a { + color: #993333; +} + +article > header h1 img { + vertical-align:middle; +} + +article > section header h1 { + font-size: 48px; +} + +article p { + clear: both; +} + +footer p { + text-align: center; + font-size: 36px; + color: #888; + margin-top: 30px; +} diff --git a/test/functional/apps/tizen/icon.png b/test/functional/apps/tizen/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 O0000 + + + + + + + dash.js tests + + + + + + +
+
+

dash.js Tests

+
+
+ + \ No newline at end of file diff --git a/test/functional/apps/tizen/js/main.js b/test/functional/apps/tizen/js/main.js new file mode 100644 index 0000000000..90d871d732 --- /dev/null +++ b/test/functional/apps/tizen/js/main.js @@ -0,0 +1,19 @@ +//Initialize function +var init = function () { + // Path to the text file where the URL is written + let filePath = 'wgt-package/url.txt'; + + tizen.filesystem.resolve(filePath, function(file) { + file.readAsText(function(url) { + console.log('Read URL from file:', url); + window.location.href = url + }, function(error) { + console.error('Error reading URL from file:', error); + }); + }, function(error) { + console.error('Error resolving file path:', error); + }, 'r'); +}; +// window.onload can work without +window.onload = init; + diff --git a/test/functional/apps/webos/test-app/appinfo.json b/test/functional/apps/webos/test-app/appinfo.json new file mode 100644 index 0000000000..52af80cf14 --- /dev/null +++ b/test/functional/apps/webos/test-app/appinfo.json @@ -0,0 +1,10 @@ +{ + "id": "com.dashjs.app", + "version": "1.0.0", + "vendor": "My Company", + "type": "web", + "main": "index.html", + "title": "dashjs LG", + "icon": "icon.png", + "largeIcon": "largeIcon.png" +} diff --git a/test/functional/apps/webos/test-app/icon.png b/test/functional/apps/webos/test-app/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1742ede0e2d5bcff3b46d234e58806b588c2fc0 GIT binary patch literal 8572 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 + + + + + + new app + + + + + + + + +
+

Hello, World!

+
+ + + diff --git a/test/functional/apps/webos/test-app/largeIcon.png b/test/functional/apps/webos/test-app/largeIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8d86e5bb812400ef048826ecd6358fd8351bb3 GIT binary patch literal 14326 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 literal 0 HcmV?d00001 diff --git a/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/LICENSE-2.0.txt b/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/LICENSE-2.0.txt new file mode 100644 index 0000000000..7b216eb0dd --- /dev/null +++ b/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/LICENSE-2.0.txt @@ -0,0 +1,202 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV-dev.js b/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV-dev.js new file mode 100644 index 0000000000..3383c4b3b7 --- /dev/null +++ b/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV-dev.js @@ -0,0 +1 @@ +window.webOSDev=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=0)}([function(e,r,t){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:function(){},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";if(!this.cancelled){var o={};try{o=JSON.parse(n)}catch(e){o={errorCode:-1,errorText:n,returnValue:!1}}var i=o,u=i.errorCode,c=i.returnValue;u||!1===c?(o.returnValue=!1,r(o)):(o.returnValue=!0,e(o)),t(o),this.subscribe||this.cancel()}}},{key:"cancel",value:function(){this.cancelled=!0,null!==this.bridge&&(this.bridge.cancel(),this.bridge=null),this.ts&&s[this.ts]&&delete s[this.ts]}}])&&c(r.prototype,t),n&&c(r,n),Object.defineProperty(r,"prototype",{writable:!1}),e}(),f={BROWSER:"APP_BROWSER"},d=function(e){var r=e.id,t=void 0===r?"":r,n=e.params,o=void 0===n?{}:n,i=e.onSuccess,u=void 0===i?function(){}:i,c=e.onFailure,a=void 0===c?function(){}:c,s={id:t,params:o};f.BROWSER===t&&(s.params.target=o.target||"",s.params.fullMode=!0,s.id="com.webos.app.browser"),function(e){var r=e.parameters,t=e.onSuccess,n=e.onFailure;(new l).send({service:"luna://com.webos.applicationManager",method:"launch",parameters:r,onComplete:function(e){var r=e.returnValue,o=e.errorCode,i=e.errorText;return!0===r?t():n({errorCode:o,errorText:i})}})}({parameters:s,onSuccess:u,onFailure:a})},b=function(){var e={};if(window.PalmSystem&&""!==window.PalmSystem.launchParams)try{e=JSON.parse(window.PalmSystem.launchParams)}catch(e){console.error("JSON parsing error")}return e},p=function(){return window.PalmSystem&&window.PalmSystem.identifier?window.PalmSystem.identifier.split(" ")[0]:""};function v(e){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function m(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function y(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:function(){},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};setTimeout((function(){return e(r)}),0)},R=function(e){return e.state===T&&""!==e.getClientId()},C=function(e,r){var t=r.errorCode,n=void 0===t?S.UNKNOWN_ERROR:t,o=r.errorText,i={errorCode:n,errorText:void 0===o?"Unknown error.":o};return e.setError(i),i},N={errorCode:S.CLIENT_NOT_LOADED,errorText:"DRM client is not loaded."},_=function(){function e(r){!function(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}(this,e),this.clientId="",this.drmType=r,this.errorCode=S.NOT_ERROR,this.errorText="",this.state=P}var r,t,n;return r=e,(t=[{key:"getClientId",value:function(){return this.clientId}},{key:"getDrmType",value:function(){return this.drmType}},{key:"getErrorCode",value:function(){return this.errorCode}},{key:"getErrorText",value:function(){return this.errorText}},{key:"setError",value:function(e){var r=e.errorCode,t=e.errorText;this.errorCode=r,this.errorText=t}},{key:"isLoaded",value:function(e){var r=this,t=e.onSuccess,n=void 0===t?function(){}:t,o=e.onFailure,i=void 0===o?function(){}:o;D({method:"isLoaded",parameters:{appId:p()},onComplete:function(e){if(!0===e.returnValue){if(r.clientId=e.clientId||"",r.state=e.loadStatus?T:P,!0===e.loadStatus&&e.drmType!==r.drmType)return i(C(r,{errorCode:S.UNKNOWN_ERROR,errorText:"DRM types of set and loaded are not matched."}));var t=y({},e);return delete t.returnValue,n(t)}return i(C(r,e))}})}},{key:"load",value:function(e){var r=this,t=e.onSuccess,n=void 0===t?function(){}:t,o=e.onFailure,i=void 0===o?function(){}:o;if(this.state!==j&&this.state!==T){var u={appId:p(),drmType:this.drmType};this.state=j,D({method:"load",onComplete:function(e){return!0===e.returnValue?(r.clientId=e.clientId,r.state=T,n({clientId:r.clientId})):i(C(r,e))},parameters:u})}else I(n,{isLoaded:!0,clientId:this.clientId})}},{key:"unload",value:function(e){var r=this,t=e.onSuccess,n=void 0===t?function(){}:t,o=e.onFailure,i=void 0===o?function(){}:o;if(R(this)){var u={clientId:this.clientId};this.state=E,D({method:"unload",onComplete:function(e){return!0===e.returnValue?(r.clientId="",r.state=P,n()):i(C(r,e))},parameters:u})}else I(i,C(this,N))}},{key:"getRightsError",value:function(e){var r=this,t=e.onSuccess,n=void 0===t?function(){}:t,o=e.onFailure,i=void 0===o?function(){}:o;R(this)?D({method:"getRightsError",parameters:{clientId:this.clientId,subscribe:!0},onComplete:function(e){if(!0===e.returnValue){var t=y({},e);return delete t.returnValue,n(t)}return i(C(r,e))}}):I(i,C(this,N))}},{key:"sendDrmMessage",value:function(e){var r=this,t=e.msg,n=void 0===t?"":t,o=e.onSuccess,i=void 0===o?function(){}:o,u=e.onFailure,c=void 0===u?function(){}:u;if(R(this)){var a=function(e){var r="",t="";switch(e){case w.PLAYREADY:r="application/vnd.ms-playready.initiator+xml",t="urn:dvb:casystemid:19219";break;case w.WIDEVINE:r="application/widevine+xml",t="urn:dvb:casystemid:19156"}return{msgType:r,drmSystemId:t}}(this.drmType),s=y({clientId:this.clientId,msg:n},a);D({method:"sendDrmMessage",onComplete:function(e){if(!0===e.returnValue){var t=y({},e);return delete t.returnValue,i(t)}return c(C(r,e))},parameters:s})}else I(c,C(this,N))}}])&&O(r.prototype,t),n&&O(r,n),Object.defineProperty(r,"prototype",{writable:!1}),e}(),x={Error:S,Type:w},V=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return""===e?null:new _(e)};function k(e){return(k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function A(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function L(e,r,t){return(r=function(e){var r=function(e,r){if("object"!==k(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r||"default");if("object"!==k(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"===k(r)?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var F=function(e){var r=e.service,t=e.subscribe,n=e.onSuccess,o=e.onFailure;(new l).send({service:r,method:"getStatus",parameters:{subscribe:t},onComplete:function(e){var r=function(e){for(var r=1;r-1&&(c="palm"),F({service:"luna://com.".concat(c,".connectionmanager"),subscribe:u,onSuccess:t,onFailure:o})}},U=function(e){var r=e.onSuccess,t=void 0===r?function(){}:r,n=e.onFailure,o=void 0===n?function(){}:n;-1!==navigator.userAgent.indexOf("Chrome")?(new l).send({service:"luna://com.webos.service.sm",method:"deviceid/getIDs",parameters:{idType:["LGUDID"]},onComplete:function(e){if(!0!==e.returnValue)o({errorCode:e.errorCode,errorText:e.errorText});else{var r=e.idList.filter((function(e){return"LGUDID"===e.idType}))[0].idValue;t({id:r})}}}):setTimeout((function(){o({errorCode:"ERROR.000",errorText:"Not supported."})}),0)}}]); \ No newline at end of file diff --git a/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV.js b/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV.js new file mode 100644 index 0000000000..37bdfaeddf --- /dev/null +++ b/test/functional/apps/webos/test-app/webOSTVjs-1.2.10/webOSTV.js @@ -0,0 +1 @@ +window.webOS=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e){e.exports=JSON.parse('{"name":"webostv-js","version":"1.2.10","description":"","main":"index.js","scripts":{"belazy":"npm run lint && npm run release","build":"node scripts/build.js","build:dev":"node scripts/build.js develop","clean":"git clean -xdf","lint":"eslint . --cache","format":"prettier --write \\"{src,tests,config,scripts}/**/*.{js,json}\\"","release":"node scripts/release.js","zip":"node scripts/zip.js","test":"node scripts/test.js app","test:mocha":"node scripts/test.js mocha"},"repository":{"type":"git","url":"http://mod.lge.com/hub/tvsdk/webostv-js.git"},"keywords":[],"author":"LGE TV Lab","license":"Apache-2.0","devDependencies":{"@babel/cli":"^7.10.1","@babel/core":"^7.10.2","@babel/polyfill":"^7.10.1","@babel/preset-env":"^7.10.2","address":"^1.0.3","archiver":"^4.0.1","babel-loader":"^8.1.0","chalk":"^2.4.1","command-exists":"^1.2.7","eslint":"^4.19.1","eslint-config-airbnb-base":"^12.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.12.0","fs-extra":"^8.1.0","html-webpack-plugin":"^4.3.0","mocha":"^5.2.0","mocha-loader":"^1.1.3","prettier":"^3.2.5","webpack":"^4.10.1","webpack-dev-server":"^3.1.4","webpack-merge":"^4.1.2"}}')},function(e,t,n){"use strict";n.r(t),n.d(t,"deviceInfo",(function(){return I})),n.d(t,"fetchAppId",(function(){return o})),n.d(t,"fetchAppInfo",(function(){return i})),n.d(t,"fetchAppRootPath",(function(){return s})),n.d(t,"keyboard",(function(){return H})),n.d(t,"libVersion",(function(){return K})),n.d(t,"platformBack",(function(){return u})),n.d(t,"platform",(function(){return k})),n.d(t,"service",(function(){return b})),n.d(t,"systemInfo",(function(){return L}));var o=function(){return window.PalmSystem&&window.PalmSystem.identifier?window.PalmSystem.identifier.split(" ")[0]:""},r={},i=function(e,t){if(0===Object.keys(r).length){var n=function(t,n){if(!t&&n)try{r=JSON.parse(n),e&&e(r)}catch(t){console.error("Unable to parse appinfo.json file for",o()),e&&e()}else e&&e()},i=new window.XMLHttpRequest;i.onreadystatechange=function(){4===i.readyState&&(i.status>=200&&i.status<300||0===i.status?n(null,i.responseText):n({status:404}))};try{i.open("GET",t||"appinfo.json",!0),i.send(null)}catch(e){n({status:404})}}else e&&e(r)},s=function(){var e=window.location.href;if("baseURI"in window.document)e=window.document.baseURI;else{var t=window.document.getElementsByTagName("base");t.length>0&&(e=t[0].href)}var n=e.match(/.*:\/\/[^#]*\//);return n?n[0]:""},u=function(){if(window.PalmSystem&&window.PalmSystem.platformBack)return window.PalmSystem.platformBack()};function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:function(){},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";if(!this.cancelled){var r={};try{r=JSON.parse(o)}catch(e){r={errorCode:-1,errorText:o,returnValue:!1}}var i=r,s=i.errorCode,u=i.returnValue;s||!1===u?(r.returnValue=!1,t(r)):(r.returnValue=!0,e(r)),n(r),this.subscribe||this.cancel()}}},{key:"cancel",value:function(){this.cancelled=!0,null!==this.bridge&&(this.bridge.cancel(),this.bridge=null),this.ts&&p[this.ts]&&delete p[this.ts]}}])&&f(t.prototype,n),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}(),b={request:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=l({service:e},t);return(new v).send(n)}};function y(e){return(y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var g={};if("object"===("undefined"==typeof window?"undefined":y(window))&&window.PalmSystem){if(window.navigator.userAgent.indexOf("SmartWatch")>-1)g.watch=!0;else if(window.navigator.userAgent.indexOf("SmartTV")>-1||window.navigator.userAgent.indexOf("Large Screen")>-1)g.tv=!0;else{try{var w=JSON.parse(window.PalmSystem.deviceInfo||"{}");if(w.platformVersionMajor&&w.platformVersionMinor){var h=Number(w.platformVersionMajor),O=Number(w.platformVersionMinor);h<3||3===h&&O<=0?g.legacy=!0:g.open=!0}}catch(e){g.open=!0}window.Mojo=window.Mojo||{relaunch:function(){}},window.PalmSystem.stageReady&&window.PalmSystem.stageReady()}if(window.navigator.userAgent.indexOf("Chr0me")>-1||window.navigator.userAgent.indexOf("Chrome")>-1){var S=window.navigator.userAgent.indexOf("Chr0me")>-1?window.navigator.userAgent.indexOf("Chr0me"):window.navigator.userAgent.indexOf("Chrome"),V=window.navigator.userAgent.slice(S).indexOf(" "),j=window.navigator.userAgent.slice(S+7,S+V).split(".");g.chrome=Number(j[0])}else g.chrome=0}else g.unknown=!0;var k=g,T={},P={},x=!1,D=!1,A=!1,C=[];function M(e){D&&A?(C.length&&(C.forEach((function(t){t!==e&&t(T)})),C=[]),e(T)):C.push(e)}function _(e){P.soundOutput&&0===P.soundOutput.indexOf("external_arc")&&"external_arc_sound_alive"!==P.soundOutput?e(!0):!P.soundOutput||0!==P.soundOutput.indexOf("tv_")&&"external_arc_sound_alive"!==P.soundOutput?e(null):e(!1)}function N(e){"auto"===P.soundOutputDigital||"passThrough"===P.soundOutputDigital?e(!0):e(!1)}function z(e,t){T.dolbyAtmos!==e&&(T.dolbyAtmos=e,D=!0,M(t))}function B(e){!function(e){T.sdkVersion&&e(T.sdkVersion.split(".")),(new v).send({service:"luna://com.webos.service.tv.systemproperty",method:"getSystemInfo",parameters:{keys:["sdkVersion"]},onSuccess:function(t){T.sdkVersion=t.sdkVersion||T.sdkVersion,e(T.sdkVersion.split("."))},onFailure:function(){e([0,0,0])}})}((function(t){parseInt(t[0],10)>=5?(new v).send({service:"luna://com.webos.service.arccontroller",method:"getARCState",subscribe:!0,onComplete:function(t){_((function(n){(n||!P.dolbyAtmosConfig&&"tv_speaker_external_arc_harmony"===P.soundOutput)&&N((function(n){z(!!n&&(t.returnValue&&"ATMOS"===t.arcProfile),e)}))}))},onFailure:function(){console.log("[webOSTV.js] getARCState failed"),z(!1,e)}}):(new v).send({service:"luna://com.webos.service.eim",method:"getAllInputStatus",subscribe:!0,onComplete:function(t){_((function(n){!n&&(P.dolbyAtmosConfig||"tv_speaker_external_arc_harmony"!==P.soundOutput&&void 0!==P.soundOutput)||N((function(n){z(!!n&&(t.returnValue&&!0===t.atmosDevice),e)}))}))},onFailure:function(){console.log("[webOSTV.js] getAllInputStatus failed"),z(!1,e)}})}))}function R(e){void 0===P.dolbyAtmosConfig?(new v).send({service:"luna://com.webos.service.config",method:"getConfigs",parameters:{configNames:["tv.config.supportDolbyTVATMOS","tv.model.soundModeType"]},onComplete:function(t){P.dolbyAtmosConfig=t.configs?t.configs["tv.config.supportDolbyTVATMOS"]||"Dolby Atmos"===t.configs["tv.model.soundModeType"]:"failure",R(e)}}):!0===P.dolbyAtmosConfig?z(!0,e):!1===P.dolbyAtmosConfig?"tv_speaker_external_arc_harmony"===P.soundOutput?N((function(t){t?B(e):z(!1,e)})):void 0===P.soundOutput?(console.log("[webOSTV.js] soundOutput value is",P.soundOutput),B(e)):z(!1,e):(console.log("[webOSTV.js] dolbyAtmos config is",P.dolbyAtmosConfig),z(!1,e))}function E(e){(new v).send({service:"luna://com.webos.service.config",method:"getConfigs",parameters:{configNames:["com.webos.app.home.uiStyle","com.webos.service.utp.supportTunerless","profile.list","tv.config.supportDolbyHDRContents","tv.hw.ddrSize","tv.hw.displayType","tv.hw.panelResolution","tv.model.mainboardMaker","tv.model.modelname","tv.model.supportHDR","tv.model.supportTemp8K","tv.model.TVBrandName","tv.model.TVManufacturer","tv.nyx.firmwareVersion","tv.nyx.platformVersion","wee.platformBizType"]},onComplete:function(t){if(t.configs){if(T.modelName=t.configs["tv.model.modelname"]||T.modelName,t.configs["tv.nyx.firmwareVersion"]&&"0.0.0"!==t.configs["tv.nyx.firmwareVersion"]||(t.configs["tv.nyx.firmwareVersion"]=t.configs["tv.nyx.platformVersion"]),t.configs["tv.nyx.firmwareVersion"]){T.version=t.configs["tv.nyx.firmwareVersion"];for(var n=T.version.split("."),o=["versionMajor","versionMinor","versionDot"],r=0;r { + log.info('Launching Tizen browser with URL: ' + url); + + // Path to your packaged Tizen web app + const appPath = path.resolve(__dirname, '../../apps/tizen/'); + + // Path to the text file where URL will be written + const urlFilePath = path.resolve(__dirname, '../../apps/tizen/url.txt'); + + // Write the URL to the text file + const hostIp = getHostIp(); + let escapedUrl = url; + escapedUrl = escapedUrl.replace('localhost', hostIp); + fs.writeFileSync(urlFilePath, escapedUrl, 'utf8'); + log.info(`URL written to file: ${urlFilePath}`); + + // Command to package the Tizen web app + const packageCommand = `${binaryPath} package -t wgt -s ${sign} -o ${appPath} -- ${appPath}`; + log.info(`Running package command ${packageCommand}`); + exec(packageCommand, (error, stdout, stderr) => { + if (error) { + log.error(`Package exec error: ${error}`); + return; + } + log.info(`Package stdout: ${stdout}`); + log.info(`Package stderr: ${stderr}`); + + // Command to install the Tizen web app + const installCommand = `${binaryPath} install -n ${appPath + '/dashjs.wgt'} -t ${deviceId}`; + + exec(installCommand, (error, stdout, stderr) => { + if (error) { + log.error(`Install exec error: ${error}`); + return; + } + log.info(`Install stdout: ${stdout}`); + log.info(`Install stderr: ${stderr}`); + + // Extract the package ID from stdout + const packageIdMatch = stdout.match(/Installed the package: Id\(([^)]+)\)/); + if (packageIdMatch && packageIdMatch[1]) { + const packageId = packageIdMatch[1]; + log.info(`Extracted package ID: ${packageId}`); + + // Command to launch the Tizen web app + const launchCommand = `${binaryPath} run -p ${packageId} -t ${deviceId}`; + + log.info(`Executing launch command: ${launchCommand}`); + + exec(launchCommand, (error, stdout, stderr) => { + if (error) { + log.error(`Launch exec error: ${error}`); + log.error(`Command: ${launchCommand}`); + log.error(`stderr: ${stderr}`); + return; + } + log.info(`Launch stdout: ${stdout}`); + log.info(`Launch stderr: ${stderr}`); + }); + } else { + log.error('Package ID not found in install output.'); + } + }); + }); + }; +} + +TizenLauncher.$inject = ['baseBrowserDecorator', 'args', 'config', 'logger']; + +module.exports = { + 'launcher:Tizen': ['type', TizenLauncher] +}; diff --git a/test/functional/config/launchers/karma-webos-launcher.cjs b/test/functional/config/launchers/karma-webos-launcher.cjs new file mode 100644 index 0000000000..b555fe5ff3 --- /dev/null +++ b/test/functional/config/launchers/karma-webos-launcher.cjs @@ -0,0 +1,64 @@ +const { exec } = require('child_process'); +const path = require('path'); +const os = require('os'); +const {getHostIp} = require('./common.cjs'); + +function WebOSLauncher(baseBrowserDecorator, args, config, logger) { + baseBrowserDecorator(this); + + const log = logger.create('launcher.webos'); + + this._start = (url) => { + log.info('Launching webOS browser with URL: ' + url); + + // Path to your web app directory + const appDir = path.resolve(__dirname, '../../apps/webos/test-app'); + const appPackagePath = path.resolve(appDir, 'com.dashjs.app_1.0.0_all.ipk'); + + // Command to package the web app + const packageCommand = `ares-package ${appDir} -o ${appDir}`; + + exec(packageCommand, (error, stdout, stderr) => { + if (error) { + log.error(`Package exec error: ${error}`); + return; + } + log.info(`Package stdout: ${stdout}`); + log.info(`Package stderr: ${stderr}`); + + // Command to install the web app + const installCommand = `ares-install ${appPackagePath}`; + + exec(installCommand, (error, stdout, stderr) => { + if (error) { + log.error(`Install exec error: ${error}`); + return; + } + log.info(`Install stdout: ${stdout}`); + log.info(`Install stderr: ${stderr}`); + + // Command to launch the web app + const hostIp = getHostIp(); + let escapedUrl = url; + escapedUrl = escapedUrl.replace('localhost', hostIp); + log.info(`Target url is ${escapedUrl}`); + const launchCommand = `ares-launch com.dashjs.app -o --params "{'url':'${escapedUrl}'}"`; + + exec(launchCommand, (error, stdout, stderr) => { + if (error) { + log.error(`Launch exec error: ${error}`); + return; + } + log.info(`Launch stdout: ${stdout}`); + log.info(`Launch stderr: ${stderr}`); + }); + }); + }); + }; +} + +WebOSLauncher.$inject = ['baseBrowserDecorator', 'args', 'config', 'logger']; + +module.exports = { + 'launcher:WebOS': ['type', WebOSLauncher] +}; diff --git a/test/functional/config/test-configurations/streams/smoke_no_drm.json b/test/functional/config/test-configurations/streams/smoke_no_drm.json new file mode 100644 index 0000000000..2776d0858e --- /dev/null +++ b/test/functional/config/test-configurations/streams/smoke_no_drm.json @@ -0,0 +1,156 @@ +{ + "testfiles": { + "included": [ + "all" + ], + "excluded": [ + "vendor/google-ad-manager-emsg" + ] + }, + "testvectors": [ + { + "name": "MSS", + "type": "vod", + "url": "https://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest", + "includedTestfiles": [ + "playback/play", + "playback/pause", + "playback/seek", + "playback/seek-to-presentation-time" + ], + "excludedPlatforms": [ + { + "browser": "safari" + } + ] + }, + { + "name": "livesim2 SCTE35", + "type": "live", + "url": "https://livesim2.dashif.org/livesim2/scte35_2/testpic_2s/Manifest.mpd", + "includedTestfiles": [ + "feature-support/emsg-triggered" + ], + "testdata": { + "emsg": { + "minimumNumberOfEvents": 2, + "runtime": 65000, + "schemeIdUri": "urn:scte:scte35:2013:bin" + } + } + }, + { + "name": "DASH-IF Live Sim - Segment Template without manifest updates", + "type": "live", + "url": "https://livesim2.dashif.org/livesim2/testpic_2s/Manifest.mpd", + "includedTestfiles": [ + "playback/play", + "playback/pause", + "playback/seek", + "playback/seek-to-presentation-time", + "feature-support/cmcd", + "playback-advanced/preload" + ] + }, + { + "name": "Segment Timeline with $time$", + "url": "https://livesim2.dashif.org/livesim2/segtimeline_1/testpic_2s/Manifest.mpd", + "type": "live", + "includedTestfiles": [ + "playback/play", + "playback/pause", + "playback/seek", + "playback/seek-to-presentation-time" + ] + }, + { + "name": "Segment Timeline with $number$", + "url": "https://livesim2.dashif.org/livesim2/segtimelinenr_1/testpic_2s/Manifest.mpd", + "type": "live", + "includedTestfiles": [ + "playback/play", + "playback/pause", + "playback/seek", + "playback/seek-to-presentation-time" + ] + }, + { + "name": "Audio only live", + "url": "https://livesim2.dashif.org/livesim2/testpic_2s/audio.mpd", + "type": "live", + "includedTestfiles": [ + "playback/play", + "playback/pause", + "playback/seek", + "playback/seek-to-presentation-time" + ] + }, + { + "name": "DASH-IF Multiperiod Segment Template", + "type": "live", + "url": "https://livesim2.dashif.org/livesim2/periods_60/continuous_1/testpic_2s/Manifest.mpd", + "testdata": { + "periods": { + "waitingTimeForPeriodSwitches": 70000, + "minimumNumberOfPeriodSwitches": 1, + "maximumNumberOfPeriodSwitches": 2 + } + }, + "includedTestfiles": [ + "playback-advanced/multiperiod-playback" + ] + }, + { + "name": "TTML Segmented Subtitles Live (livesim2)", + "url": "https://livesim2.dashif.org/livesim2/testpic_2s/multi_subs.mpd", + "provider": "dashif", + "type": "live", + "includedTestfiles": [ + "playback/play", + "playback/pause", + "playback/seek", + "playback/seek-to-presentation-time", + "text/*" + ] + }, + { + "name": "Segment Base", + "type": "vod", + "url": "https://dash.akamaized.net/dash264/TestCases/1a/sony/SNE_DASH_SD_CASE1A_REVISED.mpd", + "includedTestfiles": [ + "playback/*" + ] + }, + { + "name": "MPD Patching with $time", + "url": "https://livesim2.dashif.org/livesim2/segtimeline_1/patch_60/testpic_2s/Manifest.mpd", + "type": "live", + "testdata": { + "mpdPatching": true + }, + "includedTestfiles": [ + "feature-support/mpd-patching" + ] + }, + { + "name": "Arte forced-subtitles", + "type": "vod", + "url": "https://arteamd1.akamaized.net/GPU/034000/034700/034755-230-A/221125154117/034755-230-A_8_DA_v20221125.mpd", + "includedTestfiles": [ + "text/forced-subtitles" + ], + "testdata": { + "forcedSubtitles": {} + } + }, + { + "name": "BBC Multi Audio and Text", + "type": "live", + "url": "https://rdmedia.bbc.co.uk/testcard/simulcast/manifests/avc-full.mpd", + "includedTestfiles": [ + "audio/*", + "text/*" + ] + } + ] +} diff --git a/test/functional/config/test-configurations/tizen.json b/test/functional/config/test-configurations/tizen.json new file mode 100644 index 0000000000..32d5e94104 --- /dev/null +++ b/test/functional/config/test-configurations/tizen.json @@ -0,0 +1,24 @@ +{ + "browsers": [ + "tizen" + ], + "hostname": "localhost", + "port": 4200, + "protocol": "http", + "concurrency": 3, + "useIframe": true, + "customLaunchers": { + "tizen": { + "base": "Tizen", + "binaryPath": "/Users/danielsilhavy/tizen-studio/tools/ide/bin/tizen", + "deviceId": "GU43CU8589UXZG", + "sign": "dsi_samsung" + } + }, + "reporters": [ + "junit", + "mocha", + "html", + "coverage" + ] +} diff --git a/test/functional/config/test-configurations/webos.json b/test/functional/config/test-configurations/webos.json new file mode 100644 index 0000000000..19de1c4434 --- /dev/null +++ b/test/functional/config/test-configurations/webos.json @@ -0,0 +1,21 @@ +{ + "browsers": [ + "webOs" + ], + "hostname": "localhost", + "port": 4200, + "protocol": "http", + "concurrency": 3, + "useIframe": true, + "customLaunchers": { + "webOs": { + "base": "WebOS" + } + }, + "reporters": [ + "junit", + "mocha", + "html", + "coverage" + ] +}