# DeviceOn/BI Portal RD Test scenario 2021/01~2021/03 --- ###### tags: `DeviceOnBI` ## 2020/3/30 ### Tingwei #### [Add] Add responseMessageDialog.vue and Use it in forwardingDialog.vue **Purpose** 1. [Add] Add responseMessageDialog.vue and Use it in forwardingDialog.vue (only dialog, do not support combine forwarding data) 2. [Fix] selectParameterDialog multi-lang and style (dialog-content background color) **Test Case** 1. test server parses success and return vendor response by dev-fake-server with Url http://localhost:8080/#/index/organizationManagement?orgId=16&orgManageEditType=pageForwarding&fakeForwardingTestRes=1 in new tab - [x] 200 and response json object `window.fakeForwardingTestRes = {status: 200, statusText:'OK', response:{ "STATE": 1}}` - [x] 200 and response json string `window.fakeForwardingTestRes = {status: 200, statusText:'OK', response:"{ \"STATE\": \"json string\"}"}` - [x] 201 and response string `window.fakeForwardingTestRes = {status: 201, statusText:'OK', response:"Success !"}` - [x] 404 and response string `window.fakeForwardingTestRes = {status: 404, statusText:'Not Found', response:"404 page not found"}` - [x] 301 and response string `window.fakeForwardingTestRes = {status: 301, statusText:'Redirect', response:"Redirect..."}` 2. test real server with Url http://localhost:8080/#/index/organizationManagement?orgId=16&orgManageEditType=pageForwarding in new tab - [x] click test (will get error) - [x] window.testForwardingTest = 200 -> click test - [x] window.testForwardingTest = 500 -> click test 3. test 2 - [x] change lang to cn -> check selectParameterDialog - [x] check dialog-content background color ## 2020/3/29 ### Tingwei #### [Add] select parameter dialog. (only dialog, do not support combine forwarding data) **Purpose** 1. [Add] select parameter dialog. (only dialog, do not support combine forwarding data) **Test Case** 1. test 1 - [x] add forwarding rules -> input and blur API URL -> click add parameter button -> check the select parameter dialog - [x] check order by object name and paramName - [x] check filter object name - [x] check filter paramName ## 2020/3/26 ### Alice #### feature/forwarding-dialog **Purpose** 1. [pageForwarding][change] 1. add title bar 2. interface switch for type 3. add param table, forwardingInformationData, jsonEditor 2. [forwardingDialog][add] add forwardingDialog **Test Case** 1. test show dialog with different forwarding type 2. input api url and output param build table ## 2020/3/25 ### Alice #### feature/dialog-size-API-url-fix **Purpose** 1. [APIUrlInsert][fix] fix emit name & add input desc 2. [common][add] add dialog common size **Test Case** 1. test for forwarding dialog - [x] check parameter description was shown under the input column - [x] check the dialog size was conformed to the design draft ### Tingwei #### [Add]Add sqlEditor.vue, etc. **Purpose** 1. [Add]Add sqlEditor.vue 2. [Fix] jsonEditor.vue $emit parameter, i.g., "a<param>a" **Test Case** 1. test 1 by uncommenting testSqlEditor.vue in pagePlugin.vue - [x] body style - [x] props default text (API body) - [x] input parameter in body example and blur -> check whether $emit - [x] mounted $emit parameter data - [x] "a\<param\>a" $emit parameter "param" 2. test 2 by uncommenting testJsonEditor.vue in pagePlugin.vue - [x] "a\<param\>a" $emit parameter "param" ## 2020/3/24 ### Tingwei #### [Fix]Fix importing jsonEditor.vue error, etc. **Purpose** 1. [Fix]Fix importing jsonEditor.vue error. 2. [Change] jsonEditor mounted() $emit parameter object. **Test Case** 1. test 1 by uncommenting testJsonEditor.vue in pagePlugin.vue - [x] check default $emit parameter data ## 2020/3/23 ### Tingwei #### [Change]Change json mapping color. **Purpose** 1. [Change]Change json mapping color. **Test Case** 1. test 1 by uncommenting testJsonEditor.vue in pagePlugin.vue - [x] check colors ### Alice #### feature/forwarding-page-list **Purpose** 1. [pageForwarding][add] forwarding list 2. [pageForwarding][fix] 1. fixed id&class 2. delete correct item **Test Case** 1. test for forwarding list - [x] change rows per page to 100 -> scroll -> check tool bar & header fixed - [x] query test : search input & forwarding type mix - [x] pre/post page & different column sort - [x] after filter -> delete item -> check delete correct item ## 2020/3/22 ### Tingwei #### [Add]Add jsonEditor.vue, etc. **Purpose** 1. [Add]Add jsonEditor.vue 2. [Fix][SRPDashboard] Fix Graph and Grouped bar chart x_axis_settings of subtitle **Test Case** 1. test 1 by uncommenting testJsonEditor.vue in pagePlugin.vue - [x] body style - [x] props default text (API body) - [x] input parameter in body example and blur -> check whether $emit - [x] preview style - [x] select Json Mapping example style - [x] props default keyPath - [x] change keyPath 2. test 2 - [x] Graph x_axis_settings - [x] Grouped Bar Chart x_axis_settings ## 2020/3/18 ### Alice #### feature/forwarding-page-list **Purpose** 1. [pageForwarding][add] basic list 2. [pageForwarding] forwarding list ui 3. [UI style][change] height & pt pb change 4. [pageForwarding][add] action button ui **Test Case** 1. list sort -> search ## 2020/3/16 ### Alice #### feature/api-url-component **Purpose** 1. [Plugin&Forwarding] [add] API Url component **Test Case** 1. test - [x] input url and change query as `<param1>, <param2>...` -> blur -> emit query ParamVariableArray and APIUrl - [x] assign sourceString when edit ### Tingwei #### [Fix]ifBuild is not set true, it causes "New from Designer" does not show panel component. **Purpose** 1. [Fix]ifBuild is not set true, it causes "New from Designer" does not show panel component. **Test Case** 1. test 1, check whether panel component show - [x] New from Designer - [x] New from Template - [x] New from Existing - [x] edit dashboard ## 2020/3/15 ### Tingwei #### [Fix] Fix import/delete srpframe Authorization **Purpose** 1. [Fix] Fix import/delete srpframe Authorization **Test Case** 1. test 1 - [x] add srpframe - [x] delete srpframe ## 2020/3/11 ### Tingwei #### [Add][SRPDashboard] Add Graph **Purpose** 1. [Add][SRPDashboard] Add Graph. **Test Case** 1. test 1 - [x] add Graph - [x] add left Y item - [x] edit left Y Axis - Label - [x] edit left Y Axis - Unit - [x] edit left Y Axis - Decimals - [x] edit left Y Axis - Max - [x] edit left Y Axis - Min - [x] add Right Y item - [x] edit Right Y Axis - Label - [x] edit Right Y Axis - Unit - [x] edit Right Y Axis - Decimals - [x] edit Right Y Axis - Max - [x] edit Right Y Axis - Min - [x] X Axis - [x] duplicate display name - [x] Y item - solid line - [x] Y item - dashed line - [x] Y item - dotted line - [x] Y item - solid line (shadow) - [x] Y item - dashed line (shadow) - [x] Y item - dotted line (shadow) - [x] Y item - points - [x] Y item - color - [x] Y item - data type - [x] Y item - function type - [x] set unit, decimals, spanLow, spanHigh when left Y item saves - [x] set unit, decimals, spanLow, spanHigh when right Y item saves - [x] if the first item of left Y is discrete, set left Y decimals to 0 - [x] if the first item of right Y is discrete, set right Y decimals to 0 - [x] delete left Y item - [x] delete right Y item - [x] show customSetting option when line style mismatch ## 2020/3/9 ### Alice ### feature/hide-gbc-decimals-tip **Purpose** 1. [SRPDashboard][change] hide decimals tooltip when the first datasource's data type is not 2. [SRPDashboard][fix] group bar chart x axis style & id fix **Test Case** 1. test for GBC panel - [x] go to object page -> edit object -> add primitive parameter (datatype discrete) -> go to dashboard page -> add new blank -> add GBC panel -> select datasource (just build) -> check y axis decimals show the tool tips ### feature/null-data-content-install **Purpose** 1. [CommonComponent][add] add null data content component 2. [Plugin][add] add pagePlugin 3. [Inspection][change] remove extra code 4. [pagePlugin] page almost done 5. [Component][change] done the component 6. [change] remove extra code 7. [Plugin][add] add actions column 8. [Component][change] add show mode, remove length props 9. [pagePlugin][change] change to show mode 10. [pageObject] [change] use null data content component 11. [pageDashboard][change] add null data content component 12. [pageEvent][change] add null data content component 13. [pageUsers][change] add null data content component 14. [pageEvent][pagePlugin][pageObject][fix] tool bar bottom border (show for no data) 15. [pageArchiving][change] add null data content component 16. [pageNotification][change] add null data content component 17. [Device][change] add null data content component 18. [pagePlugin][fix] disabled pagePlugin **Test Case** 1. test for null data content component: 1. enter the keywords that don't exist in the datas name -> check the table was changed to tip page 2. change data list as empty array for test -> check the table was changed to tip page and the toolbar is also hidden - [x] pageObject - [x] pageDashboard - [x] pageEvent - [x] pageNotification - [x] pagePlugin - [x] pageArchiving - [x] pageUsers - [x] pageDevices - [x] pageMonitor - [x] pageEvent - [x] pageFirmware - [x] pageApplications - [x] pageConfigure 2. pagePlugin prototype ## 2020/2/26 ### Tingwei #### [Fix][Devices] Delete a device, its model type is unique in the list. The device was deleted but the model type filter did not update. **Purpose** 1. [Fix][Devices] Delete a device, its model type is unique in the list. The device was deleted but the model type filter did not update. **Test Case** 1. test 1 - [x] Delete a device, its model type is unique in the list. -> check model type filter **Purpose** 1. Refer to the title 2. [Change] No need to send "machine/fineone/[mapCardObjectId]" when we visit index/organizationManagement. **Test Case** 1. test 1 - [x] cick the account button of the header from the desktop device - [x] touch the account button of the header from the iphoneX of devTool 2. test 2 - [x] visit index/organizationManagement -> check network ### Alice #### feature/multistat datasource update **Purpose** 1. [SRPDashboard][fix] fix multistat unit select datasource list title render no update **Test Case** 1. test for dashboard template - [x] edit datasource -> select parameter -> change unit1/unit2 -> save -> check list update -> edit -> change unit1/unit2 -> save -> check list update ## 2021/2/25 ### Tingwei #### [Fix] state.hiddenLangTypeList does not update after the router changed. **Purpose** 1. [Fix] state.hiddenLangTypeList does not update after the router changed. **Test Case** 1. test 1 - [x] go to "index/deviceManagement" -> change language to hidden language -> add device -> save -> check whether device name of hidden language show ## 2021/2/24 ### Tingwei #### [Fix] Fix console error: "deviceNameWidth" is not defined on the instance but referenced during render. The error shows when we visit "deviceManagement -> Event", etc. **Purpose** 1. [Fix] Fix console error: "deviceNameWidth" is not defined on the instance but referenced during render. The error shows when we visit "deviceManagement -> Event". 2. [Fix] Fix console error: "GET https://portal-deviceon-bi-develop-eks002.hz.wise-paas.com.cn/subscribe-proxy/subscription/orginfo/ 404 ". The error shows when we visit index/OrganizationManagement under no orgId query string and no "localStorage.selectedNodeId" condition. 3. [Change] When object profile dialog shows, no need to update "/alarmlevel" and "/alarmcategory". 4. [Fix] "changeLog.vue" or "Markdown.vue" overwrites device status font-color css. **Test Case** 1. test 1 - [x] go to "index/organizationManagement" -> Event -> check Console 2. test 2 - [x] under no orgId query string and no "localStorage.selectedNodeId" condition, visit "index/organizationManagement" by new tab -> check Console 3. test 3 - [x] go to "index/profileManagement" -> create object profile -> check whether "/alarmlevel" and "/alarmcategory" were not sent. 4. test 4 - [x] go to "index/systemSetting" -> "index/deviceManagement" -> check whether all font-color of device status are correct. - [x] go to "version" -> "index/deviceManagement" -> check whether all font-color of device status are correct. #### [Change] Only navigating to organizationManagement and systemSetting updates licenseSetting(orgnode/all/licenseinfo). **Purpose** 1. [Change] Only navigating to organizationManagement and systemSetting updates licenseSetting(orgnode/all/licenseinfo). **Test Case** 1. test 1 - [x] go to "index/organizationManagement" -> check whether licenseSetting(orgnode/all/licenseinfo) sends - [x] go to "index/systemSetting" -> check whether licenseSetting(orgnode/all/licenseinfo) sends - [x] go to "/home" -> check whether licenseSetting(orgnode/all/licenseinfo) doesn't send - [x] go to "/deviceManagement" -> check whether licenseSetting(orgnode/all/licenseinfo) doesn't send ## 2021/2/23 ### Tingwei #### [Change]"/langtype" and "/langtype/dynamic" send only when we launch the web, etc. **Purpose** 1. [Change] Delete the redundant "dashboard/all" which sends when navigating to "index/organization". 2. [Change] "/langtype" and "/langtype/dynamic" send only when we launch the web. 3. [Change] "/langtype" and "/langtype/dynamic" take ver when sending. 4. [Change] No need to check whether store.state.langUserInfo and store.state.dynamicLang exists and get "/langtype" and "/langtype/dynamic" in the components. 5. [Change] Delete "FETCH_STATIC_LANG_RESOURCE", "FETCH_DYNAMIC_LANGUAGETYPE", "FETCH_LANG_TYPE" and their relative codes. They move to "store/index.js" from "store/mosules/common.js" because their response data bind to the main store.. 6. [Change] Delete unused "src/util/data-format/types.js". 7. [Fix] Under no orgId queryString and no localStorage.selectedNodeId condition, activate the user-bound and enabled Org if found it. or, activate the first Org. **Test Case** 1. test 1 - [x] go to "index/organization" -> check whether only Dashboard send "dashboard/all" 2. test 2 - 5 - [x] launch web -> check whether "/langtype" and "/langtype/dynamic" take ver. - [x] -> go to deviceManagement -> check whether "/langtype" and "/langtype/dynamic" send 3. test 7 - [x] visit index/organization with an account that doesn't bind the first org ## 2021/2/22 ### Alice #### feature/notification-obj-param-multilang **Purpose** 1. [Notification][fix] Add/Edit Notification Group > Others... > Object & Parameter item show with locallang **Test Case** 1. test for notification group - [x] add object -> enter the object names in the corresponding language -> add parameter enter names in the corresponding language -> save parameter -> save object -> change to notification page -> notification group -> click create notification group icon -> click others... -> click group -> click object -> check object & parameter is shown the correct language name ## 2021/2/20 ### Tingwei #### [Change] Dynamic import page components in organizationManagement, etc. **Purpose** 1. [Change] Dynamic import page components in organizationManagement 2. [Change] Dynamic import UploadProfileWorker and UploadAlarmCodeWorker 3. [Add] dynamicImport.js, dynamicImportError.vue and dynamicImportLoading.vue 4. [Change] Comment unused XLSX and types.FETCH_ALARM_CODE_FILE in src/store/modules/profile.js. XLSX will exclude from chunk.vendors~app.xxx.js 5. [Fix] Delete the redundant border at the left of pagination in slotParameterToolbar. It shows in the older version slotParameterToolbar (the parameter list, etc.). **Test Case** 1. test 1 ~ 4 by `npm run prod-test-report`, and run `npm run prod-test` in portal_mplse_release - [x] check the report - [x] page Object -> refresh - [x] -> page Dashboard -> refresh - [x] -> page Inspection -> refresh - [x] -> page Event -> refresh - [x] -> page Notification -> refresh - [x] -> page Archiving -> refresh - [x] -> page Users -> refresh - [x] -> page Object -> refresh - [x] upload a alarm code excel in the object dialog - [x] -> download a alarm code excel - [x] upload a object profile excel - [x] upload a alarm code excel in the profile dialog - [x] -> download a alarm code excel - [x] -> change those file name -> refresh -> check the error message - [x] use network speed "fast 4G" -> refresh -> check the loading in pageDashboard 2. test 5 - [x] check whether the redundant border at the left of pagination does not show in parameter list of object profile dialog #### [Change] Only navigating to deviceManagement, organizationManagement, systemSetting or profileManagement updates alarmLevel and alarmCategory, etc. **Purpose** 1. [Change] Only navigating to deviceManagement, organizationManagement, systemSetting or profileManagement updates alarmLevel("/alarmlevel/all") and alarmCategory("/alarmcategory/all"). 2. [Change] Only navigating to organizationManagement or profileManagement updates functionList("/machine/calcfunction/all"). **Test Case** 1. go to page and check those api network - [x] go to deviceManagement, check whether alarmLevel and alarmCategory update. - [x] go to systemSetting, check whether alarmLevel and alarmCategory update. - [x] go to systemSetting with not space management, check whether alarmLevel, alarmCategory update and functionList update when redirect to organizationManagement. - [x] go to organizationManagement, check whether alarmLevel, alarmCategory update and functionList update. - [x] go to profileManagement, check whether alarmLevel, alarmCategory update and functionList update. - [x] go to userManagement, check whether those api do not update - [x] go to menuManagement, check whether those api do not update - [x] go to home, check whether those api do not update ## 2021/2/18 ### Alice #### feature/profile-recording-rate **Purpose** 1. [Profile][change] parameter default saveFreq: 60 sec -> 0 sec **Test Case** 1. test for create & edit profile - [x] create profile -> add 2 parameter(one recording rate is 'Do not record', the other is 10 min) -> check default recording rate is 'Do not record' -> save parameter -> edit parameter -> check recording rate value -> save parameter -> save profile - [x] edit profile -> edit parameter -> checking recording rates is same as save result #### feature/panel-type-compatibility **Purpose** 1. [SRPDashboard] add panelType when no panelType, compatibility for old version dashboard **Test Case** 1. test for edit dashboard - [x] edit old dashboard -> checking that the panel item panel type was loaded ### Tingwei #### [Add][organizationManagement] Assign orgId and orgManageEditType to the query strings and use them... etc **Purpose** 1. [Add][organizationManagement] Assign orgId and orgManageEditType to the query strings and use them. 2. [Add][organizationManagement] Assign orgId to localStorage and use it. 3. [Add][deviceManagement] Assign deviceManageEditType to the query strings and use it. 4. [Fix][organizationManagement] Not fullscreen loading covers the nav(the org list) when the object list table is loading. 5. [Fix]Close the nav(the org list) when click the Logo. 6. [Fix][organizationManagement] Don't close the fullscreen loading when the timing between creating org successfully to selecting the new org. 7. [Fix][deviceManagement] The current tab name in the header(My Device / xxx) does not translation. 8. [Fix][organizationManagement] Multiple Lang keys (no_object _desc) are mistakenly use no_dashboard_desc in ObjectList.vue and pageArchiving.vue. **Test Case** 1. test the query string and setLoadingEnd by refreshing page and changing tab - organizationManagemant - [x] page Object -> refresh - [x] -> page Dashboard -> refresh - [x] -> page Inspection -> refresh - [x] -> page Event -> refresh - [x] -> page Notification -> refresh - [x] -> page Archiving -> refresh - [x] -> page Users -> refresh - [x] -> page Object -> refresh - [x] -> change org -> refresh page 2. test the query string for purpose changing route - Organization Managemant - [x] -> click logo -> check whether the query string has orgId -> click Object Management at '/home' - [x] from profileManagement to organizationManagemant - [x] logout -> login -> go to Origanization Management - [x] create children group - [x] delete children group - [x] create root org - [x] delete root org 3. test the invalid query string - Organization Managemant - [x] input invalid orgId in url - [x] start from the new tab of browser with invalid orgId in url - [x] input invalid orgManageEditType in url - [x] start from the new tab of browser with invalid orgManageEditType in url - [x] start from the new tab of browser with invalid objectId in url 4. test localStorage selectedNodeId(id) - Organization Managemant - [x] start from the new tab of browser with a valid selectedNodeId and no query string - [x] start from the new tab of browser with a invalid selectedNodeId and no query string - [x] start from the new tab of browser with a no selectedNodeId and no query string 5. test changing role - Organization Managemant - [x] changing admin org to enginner org in pageUsers by click the nav - [x] start from the new tab of browser with to enginner org in pageUsers by the query string 6. test the query string by refreshing page and changing tab - deviceManagemant - [x] page Devices -> check the header(My Device / xxx) translation -> refresh - [x] -> page Monitor -> check the header(My Device / xxx) translation -> refresh - [x] -> page Event -> check the header(My Device / xxx) translation -> refresh - [x] -> page Firmware -> check the header(My Device / xxx) translation -> refresh - [x] -> page Application -> check the header(My Device / xxx) translation -> refresh - [x] -> page Config -> check the header(My Device / xxx) translation -> refresh ### Alice #### feature/designer add panel type **Purpose** 1. [SRPDashboard] - [add] add panel type comparison list - [fix] fix readonly & disabled value string console error **Test Case** 1. test for dashboard designer - [x] add new blank -> add donut chart -> check panel type same as title & readonly & disabled -> save - [x] edit the dashboard that just saved -> check panel type - [x] change panel title -> save -> edit -> check panel type * This feature only supports panels that added after version 1.00.007 and above ## 2021/2/9 ### Alice #### feature/inspection bug fix **Purpose** 1. [Inspection][add] add home, overview tab 2. [Inspection][fix] let inspection tab available when add org **Test Case** 1. test for inspection page - [x] click inspection tab -> tab active home/overview - [x] add root org -> check inspection tab was available(only root org and when it is added) ## 2021/2/8 ### Alice #### feature/el-select-no-render **Purpose** 1. [Center Portal][fix][Front-end] after backspace, el-select is no render, fix with reload when tab is 'cloud'. **Test Case** 1. test for sign in page -[x] input username -> input wrong password -> select domain -> remember me -> sing in -> click forget password/sign up -> backspace -> check domain was selected and render label at input ## 2021/2/5 ### tingwei #### [Fix] Replace email and change the description to * in the device's existing condition, etc **Purpose** 1. [Fix] Replace email and change the description to * in the device's existing condition. 2. [Change] If from manual, click BACK to go back, else click SCAN AGAIN to go to the scan QR Code page. **Test Case** 1. test 1 & 2 - [x] visit by key in 'mobile/device/addDevice?mac=00-D0-C9-F8-9E-53&modelType=UNO-137' -> check user list and the description - [x] -> click SCAN AGAIN - [x] scan existing device QR Code from iphone camera -> check user list and the description - [x] -> click SCAN AGAIN - [x] Add manually -> submit existing device -> click BACK ## 2021/2/4 #### Tingwei #### [Fix] Fix below error logs... etc **Purpose** 1. [Fix] Fix below error logs a .Invalid prop: type check failed for prop "searchPlaceholderDefaultText". Expected String with value "User Group Name", got Array . b .Invalid prop: type check failed for prop "searchPlaceholderDefaultText". Expected String with value "Notification Group Name", got Array . c .Cannot read property '0' of undefined. 2. [Fix] Fix logo is center when in 'index/organizationManagement' and window width < 657px. **Test Case** 1. test 1 in index/organizationManagement - [x] test a & b -> go to Notification -> check Console - [x] test c -> when Tabs are not fixed at the top -> change window size -> check Console 2. test 2 in index/organizationManagement - [x] change window width < 657px -> check logo ## 2021/2/3 #### Alice #### [Center Portal][change][Front-end] remove input radius & -webkit-appearance **Purpose** 1. [Center Portal][change][Front-end] remove input radius & -webkit-appearance 2. [Center Portal][fix][Front-end] error message fix 3. [Center Portal][fix][Front-end] router query error message fix **Test Case** 1. test for mobile - [x] mobile scan -> check input style - [x] input wrong password/username -> submit -> check error message ### Tingwei #### [change]In tablet or mobile device, the header dropdown hide "Advanced setting", "Help", "Home" and "Account". **Purpose** 1. In tablet or mobile device, the header dropdown hide "Advanced setting", "Help", "Home" and "Account". **Test Case** 1. test 1 by chrome devtool, changing device need to refresh page - [x] iphone x - [x] iPad - [x] desktop #### [Fix] Fix util.js translation wrong. **Purpose** 1. [Fix] Fix util.js translation wrong. **Test Case** 1. go to https://localhost:8080/#/mobile/device/addDevice/manual, test below error message - [x] ja required - [x] zh_tw length - [x] ja length #### [change][Devices] Editing success (only EdgeLink and SCADA) and Deleting success no need to reset Current Page, Rows Per Page, Search Keyword...etc **Purpose** 1. [change][Devices] Editing success (only EdgeLink and SCADA) and Deleting success no need to reset Current Page, Rows Per Page, Search Keyword 2. [Fix][Devices] Deleting Device success no need to setLoadingEnd 3. [Fix][Devices] Fix dropdown of "Rows Per Page" is cover by the fixed right columns **Test Case** 1. test edit - [x] go to 2+ page & Rows Per Page is 20 -> edit device -> save - [x] search -> edit device -> save 2. test delete - [x] go to 2+ page & Rows Per Page is 20 & 2+ device in this page -> delete device -> save - [x] go to 2+ page & Rows Per Page is 20 & only 1 device in this page -> delete device -> save - [x] search & more than 2 device in this page -> delete device -> save - [x] search & only 1 device in this page -> delete device -> save 3. test purpose 3 in 1360px - [x] Devices -> check dropdown of "Rows Per Page" ## 2021/2/2 ### Alice #### feature/gzip build **Purpose** 1. [Center Portal][change][Front & Back -end] - build gzip 2. [Center Portal][change][Front-end] - sign in only when res data status === 'deviceon-bi' 3. [Center Portal][change][Back-end] - sign in check mode 4. [Center Portal][change][Front-end] - action url tweak, exclude the possibility of exceptions, like url.com/#/login **Test Case** 1. test for build - [x] build -> network file response headers content encoding is gzip 2. test for domain api - [x] submit https://api-portal...... -> response body status is 'deviceon-bi'-> submit action redirect 3. test for domain api - [x] click forget password or sign up -> working 4. test for submit action url - [x] input url that has postfix(ex. http://xxxx.xxxx.com/#/login) -> submit -> work correctly ### Tingwei #### [Fix]When we redirect to /login from new tab with not /login URL, "Session Timeout" is no need to show...etc **Purpose** 1. [Fix]When we redirect to /login from new tab with not /login URL, "Session Timeout" is no need to show...etc 2. [Fix]Fix opacity is 0 when not login and key in not /login URL(i.g., /index/deviceManagement) at /login page. **test** 1. Test 1 - [x] Login -> delete Token -> go to /index/deviceManagement - [x] -> visit https://localhost:8080/#/index/deviceManagement from a new tab 2. Test 2 - [x] -> in login page and not login -> key in https://localhost:8080/#/index/deviceManagement #### [Fix][Mobile Device] Add device manually, when select connector device, hide mac field... etc **Purpose** 1. [Fix][Mobile Device] Add device manually, when select connector device, hide mac field. 2. [Change][Mobile Device] If the device is a connector device, formatSerialNoLabel return "Edge ID". 3. [Change][Mobile Device] Add device by scan QR code, format mac address when initAddDevice. **test** 1. Test 1 - [x] Add -> Manually Input -> select device "WISE -> LoRaWAN -> NS Service" -> save 2. Test 2 - [x] check "NS Service" device in mobile/device/deviceList 3. Test 3 - [x] scan qrcode which contains lowercase MAC Address -> check whether mac Address is uppercase in input #### [Fix] Hide outline when click dropdown button of header and "Add"... etc **Purpose** 1. [Fix] Fix "this.selectedProduct.name.indexOf('Connector')" to "this.getConnectorNameEnum.indexOf(this.selectedProduct.name)" for product "WISE -> LoRaWAN -> NS Service". 2. [Change] Move "createDeviceCredentialKey" ('/device/create/credentialkey/connector') from handleProductModuleChange() to saveNewDevice() to make sure Promise. 3. [Fix] multiLangSource.scan_device_QR_code and multiLangSource.mobile_add_new_device_header_content 4. [Fix] Hide outline when click dropdown button of header and "Add" **test** 1. Test 1 & 2 - [x] select device "WISE -> LoRaWAN -> NS Service" -> save -> edit it in deviceManagement 2. Test 3 - [x] Add -> check "Scan Device QR Code" - [x] Add -> Manually Input -> check "Please fill in the following fields to add device." 3. Test 4 - [x] click Add -> check whether outline hides - [x] click Gear Icon of header -> check whether outline hides - [x] click User Icon of header -> check whether outline hides ## 2021/1/29 ### Alice #### feature/test and bug fix **Purpose** 1. [Center Portal][add][Back-end] - POST api - domainStatus 2. [Center Portal][add][Front-end] - domainStatus POST api connect - use window.open replace href url - add url pointer 3. [Center Portal][change][Back-end] - add POST api - domainStatus - remove extra code and sync the back-end code 4. [Center Portal][change][Front-end] - window.open url must be _self not _blank **Test Case** 1. correct sign in (cloud/edge) 2. test for username error(empty/format error/invalid username) 3. test for password error(empty/length not enough/invalid password) 4. test for domain error(empty/forget password/sign in/sign up/invalid domain url) 5. domain input slash(/) test 6. after select station, clear error message (cloud) 7. remember me -> store username, current tab, domain 8. test url status before redirect(sign up/sign in/forget password) 9. preventDefault action event before url status check 10. window.open url by _self(sign up/forget password) 11. after redirect clear the password field 12. \<a> and \<button> cursor pointer change - test url: https://wise-deviceon-bi.azurewebsites.net/#/login ### Tingwei #### [Change] Apply timeoutHandler on mobileMain.vue... etc **Purpose** 1. [Add] Extract timeoutHandler from index.vue and create a mixin component: "components/_extend_mixin/timeoutHandler.js". 2. [Change] Apply timeoutHandler on index.vue and mobileMain.vue. 3. [Change] If isMobile and has valid token, visit page by domain directly will redirect to mobile/device/deviceList **Test Case** 1. Test 1 & 2 by using safari connect iphone by develop tool od safari - [x] mobile/device/deviceList -> change "refreshTokenFlag" in localStorage to "1" -> touch iphone -> check whether refreshToken in network - [x] mobile/device/deviceList -> delete "EIToken" and change "refreshTokenFlag" in localStorage to "1" -> touch iphone -> check whether Logout - [x] mobile/device/deviceList -> change to other App or web page -> delete "EIToken" and change "refreshTokenFlagTimerTimestamp" in localStorage to "0" -> turn back to our page -> check whether Logout 2. Test 1 & 2 by using desktop chrome - [x] organizationManagement -> change "refreshTokenFlag" in localStorage to "1" -> scroll -> check whether refreshToken in network - [x] organizationManagement -> delete "EIToken" and change "refreshTokenFlag" in localStorage to "1" -> click -> check whether Logout - [x] organizationManagement -> change to web page -> delete "EIToken" and change "refreshTokenFlagTimerTimestamp" in localStorage to "0" -> check whether Logout 3. Test 3 - [x] login in iphone -> visit page by domain directly -> check whether redirect to mobile/device/deviceList - [x] login in desktop -> visit page by domain directly -> check whether redirect to organizationManagement ## 2021/1/28 ### Tingwei #### [Add] Add Device manually...etc **Purpose** 1. [Add][Mobile Device] Add Device manually 2. [Add][Mobile Device] validate modelType and mac Address **Test Case** 1. Test 1 - [x] Manually input -> name successfully 2. Test 2 - [x] add by scan qrcode -> modelType length > 32 - [x] add by scan qrcode -> invalid modelType (unsupported product) - [x] Manually input -> mac address length < 15 - [x] Manually input -> mac address exists ### [Fix]Profiles hide when no any org bind. **Purpose** 1. [Fix]Profiles hide when no any org bind. **Test Case** 1. Test 1 - [x] visit profileManagement in user who binds no any org ## 2021/1/27 ### Tingwei #### [Add][Mobile Device] Add error page... etc **Purpose** 1. [Add][Mobile Device] Add error page 2. [Add]Avoid view zoom in when focus input **Test Case** 1. Test by `npm run dev-https0000` in mac, using iphone connect local server by IP in the same network. - [x] scan unsupported model type - [x] -> scan again -> scan exist device - [x] -> scan again -> scan no mac - [x] -> scan again -> scan no modelType - [x] -> scan again -> scan no both mac and modelType - [x] -> scan again -> in "Access the Camera dialog" click cancel(block camera) - [x] use company PC(no camera) -> add -> scan device qrcode -> check "No Camera Found" - [x] visit by http and not localhost -> add -> scan device qrcode - [x] My iphone or PC does't occur "NotReadableError", so test word by runing below code in Console of devtool `document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_NotReadableError'; document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})` - [x] My iphone or PC does't occur "OverconstrainedError", so test word by runing below code in Console of devtool`document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_OverconstrainedError'; document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})` - [x] My iphone or PC does't occur "StreamApiNotSupportedError", so test word by runing below code in Console of devtool`document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_StreamApiNotSupportedError'; document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})` - [x] test other uncategary init error word by runing below code in Console of devtool`document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_other'; document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})` 2. Test 2 by my iphone - [x] go to /login -> click User Name ####[Change] If device is Mobile/Pad, login to /mobile/device/deviceList. Otherwise, login to /home.... etc **Purpose** 1. [Change] If device is Mobile/Pad, login to /mobile/device/deviceList. Otherwise, login to /home. 2. [Add] Add new package, "mobile-device-detect". Set isMobile into store.state when web initializes. 3. [Change] When going to /mobile/device/addDevice, in no both mac and modelType condition, if device is Mobile/Pad redirect to /mobile/device/deviceList, Otherwise, redirect to /home. 4. [Change] "vue-qrcode-reader": "^2.3.15" 5. [Change] In /mobile/device/addDevice, mac and model are editable. **Test Case** 1. Test purpose 1 & 2 - [x] mobile login by iphone -> /mobile/device/deviceList - [x] ipad login by chrome devtool "iPad Pro" -> /mobile/device/deviceList - [x] desktop login -> /home 2. Test purpose 3 - [x] mobile, url input /mobile/device/addDevice -> /mobile/device/deviceList - [x] ipad, url input /mobile/device/addDevice -> /mobile/device/deviceList - [x] desktop, url input /mobile/device/addDevice -> /mobile/device/deviceList 3. Test purpose 5 - [x] go to https://localhost:8080/#/mobile/device/addDevice?mac=00-D0-C9-F8-9E-55&modelType=UNO-137 -> check whether mac address and model type are editable. ## 2021/1/22 ### Tingwei #### [Add][Mobile Device] Add description into pageMobileAddDevice and PageMobileDeviceList... etc **Purpose** 1. [Add][Mobile Device] Add description into pageMobileAddDevice and PageMobileDeviceList 2. [Add][Mobile Device] Scroll to top when page change. **Test Case** 1. Test 1 & 2 - [x] go to https://localhost:8080/#/mobile/device/addDevice?mac=32-D3-FB-E8-46-9F&modelType=UNO-137 -> fill desc which has length > 200 -> submit - [x] valid desc -> submit - [x] no desc -> scroll down to the bottom of page -> submit - [x] -> check whether scroll to top and check desc deviceList ### Alice #### feature/fix sso login box size **Purpose** 1. [SSO][fix] fix size same as cloud center **Test Case** 1. add new login box size when page size change - [x] 1440 - 1920 - [x] 1920 - 2560 #### feature/center portal file update **Purpose** 1. [Center Portal][Front-end][add] - api connect - store multilang 2. [Center Portal][Front-end] [change] - error msg & forget url fix - remember only username - validate timing change - login box size change - detect the domain last char is '/' - update ver - add maximum & minimum scale for mobile 3. [Center Portal][Back-end][change] - add CORS - update ver 4. [Center Portal][change] - remove useless file & code **Test Case** 1. test for cloud center page - [x] get station list from /api/stationList -> select option -> sign in - [x] get language from store -> detect bowser language -> check label and placeholder correct - [x] click the forget url -> jump to the correct station that forgot password page - [x] check remember me before sign in -> sign error go back this page -> username must be kept - [x] username blur only check username (validate input fields independently) - [x] test difference resolution - 320 x 568 - 375 x 667 - 414 x 736 - 375 x 812 - 768 x 1024 - 1024 x 1366 - 1366 x 768 - 1440 x 1920 - 1920 x 2560 - 2560 ↑ ## 2021/1/21 ### Tingwei #### [Add][Mobile Device] pageMobileScanDeviceQRCode.vue ... etc **Purpose** 1. [Add][Mobile Device] pageMobileScanDeviceQRCode.vue 2. [Add][Device] close button of sideBar of My Device add hover and active icon **Test Case** 1. Test 1 by `npm run dev-https0000` in mac, using iphone connect local server by IP in the same network. - [x] go to mobile/device/deviceList -> click Add -> click "Scan Device QR Code" -> scan valid QR Code -> add device (iphone safari and chrome) - [x] scan invalid QR Code(i.g., ejdoawiejdoi) - [x] go to mobile/device/deviceList -> click Add -> click "Scan Device QR Code" -> do not allow camera 2. Test 2 - [x] go to Devices -> click any device name -> mouse hovers close button -> click close button ## 2021/1/20 ### Alice #### feature/center portal file update **Purpose** [Center Portal][add] update docker file branch ## 2021/1/19 ### Alice #### feature/fix-notification-select-variable **Purpose** 1. [Notification][fix] select variable dialog path, object item add ellipsis **Test Case** 1. test for notification select variable dialog - [x] text over path/content with text ellipsis #### feature/center-portal-file-update **Purpose** 1. [Center Portal][add] - file upload (update package version) 2. [Center Portal][add] - front-end, back-end 3. [Center Portal][add] - front-end, back-end update for build 4. [Center Portal][add] - redirect to login - /bi/auth/login form action test 5. [Center Portal][add] - add store for could center - build and test - remove dist data 6. [Center Portal][add] - remove old sso css - change cloud center page struct - add new scss for cloud center - add new color variables 7. [Center Portal][add] - clear style and reduce unuseful html tag - value & style name format - api url add 8. [Center Portal][add] - error tips - username, password, domain check - preventDefault redirect when error 9. [Center Portal][Back-end][add] - edit docker file **Test Case** 1. test for build - [x] npm run prod-test make the dist -> move to back-end npm run prod-test -> check server listen at http://localhost:8080 is work - [x] check username, password, domain empty/doesn't match format - [x] singup/forget password link - [x] rwd - [x] correct form data post and redirect url - [x] get back end error and show ## 2021/1/18 ### Tingwei #### [change]Close if Flag: get account not by Cookies when "process.env.NODE_ENV !== 'production' || window.location.host.indexOf(Conf.testAPIForLocal) > -1)" **Purpose** 1. [change]Close if Flag: get account not by Cookies when "process.env.NODE_ENV !== 'production' || window.location.host.indexOf(Conf.testAPIForLocal) > -1)" 2. [change]logout delete cookies "EIToken" and "WISEUser". **Test Case** 1. test 1 with `npm run dev` - [x] go to #/login - [X] -> login - [x] go to #/index/organizationManagement - [x] logout -> login again ### [Add]pageMobileDeviceList...etc **Purpose** 1. [Add]pageMobileDeviceList 2. [Fix][Mobile Device] CredentialKey should not be delete after adding device success 3. [Fix][Mobile Device] Add device success message new style **Test Case** 1. test 1 with `npm run dev` - [x] go to #/mobile/device/deviceList -> check image, Name, Model Type, MAC Address(or SCADA ID or IMEI Code) - [x] click Add -> click -> Scan Device QR Code - [x] click Add -> click -> Manually Input 2. test 2 ~ 3 - [x] #/mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=UNO-137 -> add a new device -> check success message style - [x] -> after page changes to #/mobile/device/deviceList ->check whether CredentialKey deleted in network(or You can delete the device from #/index/deviceManagement. If no CredentialKey, deleting will show an error. ) ## 2021/1/15 ### Tingwei #### [Change]on-primises hide "Sign up", "Activate Account " and "subscribe Now" ... etc **Purpose** 1. [Change] on-primises hide "Sign up", "Activate Account " and "subscribe Now" 2. [Change] change "product/module" APII 3. [Fix] Fix only mac or modelType change bug. **Test Case** 1. test 1 with changing `prod.config.js -> testAPIForLocal to e100-ensaas.isghpc.wise-paas.com, and npm run dev` - [x] go to #/login 2. test 2 & 3 with changing `prod.config.js -> testAPIForLocal to develop-eks002.hz.wise-paas.com.cn, and npm run dev` - [x] go to #/mobile/device/addDevice?mac=4A-FA-52-48-F3-3A&modelType=ADAM-6017 - [x] -> change value of modelType to GG in url field of browser and press enter ## 2021/01/14 ### Tingwei #### [Add][mobile] page Add Device **Purpose** 1. pageAddDevice 2. Submit 3. Cancel 4. validation: no mac, no modelType, no both, unsupported modelType, mac exist, duplicate device name. 5. channel **Test Case** 1. test after login - [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=ADAM-6017 -> check whether device exists - [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType= -> check whether no modelType - [x] go to /mobile/device/addDevice?mac=&modelType=ADAM-6017 -> check whether no mac - [x] go to /mobile/device/addDevice?mac=&modelType= -> check whether go to device list - [x] go to /mobile/device/addDevice -> check whether go to device list - [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=GG -> unsupported - [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=ADAM-6017 -> input deplicate name -> submit - [x] -> change correct name -> submit -> check whether success - [x] check device(ADAM-6017) created from index/deviceManagemant -> whether the default I/O Channels exist - [x] test iphone safari, wechat, chrome, line - Android will test in the future ## 2021/01/07 ### Tingwei #### [Change][Devices]Device list fixed actions column in the right side. **Purpose** 1. [Change][Devices]Device list fixed actions column in the right side. **Test Case** 1. test purpose 1 - [x] check fixed actions ## 2021/01/06 ### Tingwei #### [Add] Support profile server api in on-premises space...etc **Purpose** 1. [Add] Support profile server api in on-premises space. 2. [Fix] systemInfo and license are reset when Logout. 3. [change] Separate "systemState" from defaultState. "systemState" will not reset when "setLogOut". "defaultState" will reset when "setLogOut". 4. [Delete] Delete unused src/axios/axios.js **Test Case** 1. test purpose 1 in http://portal-deviceon-bi-e100-ensaas.isghpc.wise-paas.com/ - [x] go to profileManagement -> create a profile - [x] -> edit profile -> upload a alarm code excel - [x] delete a profile - [x] create object from profile 2. test purpose 1 in http://portal-deviceon-bi-develop-eks002.hz.wise-paas.com.cn - [x] go to profileManagement 3. test purpose 2~3 in http://portal-deviceon-bi-develop-eks002.hz.wise-paas.com.cn - [x] login -> logout -> open chrome devtool -> open Console and input `document.getElementById('app').__vue__.$store.state.systemInfo` chech whether systemInfo is not empty object 4. test purpose 4 in localhost:8080 - [x] login -> go to profileManagement -> logout #### [Fix][Devices][tagInfoList] Fix bug, in sidebar tab is "Dependent Resources" condition, tag total count does not update after user change selected device...etc **Purpose** 1. [Fix][Devices][tagInfoList] Fix bug, in sidebar tab is "Dependent Resources" condition, tag total count does not update after user change selected device. 2. [Fix][Devices][tagInfoList] Fix error when dataType is null. 3. [Fix][Device List] Fix checkbox count does not reset when fetchDeviceInfoList (i.g., edit and save a device) 4. [Fix] Fix Blue background always keep even through sidebar close. 5. [Change][My Devices]Change showing sidebar timing from click a row to click the device name. 6. [Add] hyperlink.scss **Test Case** 1. test 1 & 2, change testAPIForLocal to 'trace-eks002.hz.wise-paas.com.cn' in prod.env.js, login with 'xiaochen.shi@advantech.com.cn' account - [x] go to devices -> click a device -> click 'dependent Resources' -> change device -> check tags total count - [x] -> click Tags in the tabs of sidebar -> select 'childDev' device -> check tag table 2. test 3 - [x] open pageDevices.vue -> change isShowCheckbox to 'true' -> go to browser -> go to Devices -> check 3 checkbox -> edit a device -> save the device -> check a checkbox -> check whether chechbox total count is 1 3. test 4 - [x] sidebar show -> shide bar close -> check the row background color 4. test 5 & 6 in My Devices page - [x] tab Devices -> click device name -> change device - [x] tab Devices -> click row - [x] tab Monitor -> click device name -> change device - [x] tab Monitor -> click row - [x] tab Alarm -> click device name -> change device - [x] tab Alarm -> click row - [x] tab Firmware -> click device name -> change device - [x] tab Firmware -> click row - [x] tab Configure -> click device name -> change device - [x] tab Configure -> click row ### Alice #### feature/clear-refresh-value **Purpose** 1. [SRPDashboard] update refresh value as "" **Test Case** 1. test for add from template - [x] save the dashboard that add from template -> preview (need database also change the default refresh value) ## 2021/01/04 ### Alice #### feature/panael-discrete-decimal0 **Purpose** [SRPDashboard] 1. detect Group Bar Chart first target's data type for disabled decimal 2. change decimal to 0 3. add tips after the decimal label 4. log chart panel no decimal value can be setting yet **Test Case** 1. test for dashboard add blank - [x] add a grouped bar chart panel -> add a parameter that data type is discrete -> edit Y Axis -> check decimal was disabled -> check the tips that after label - [x] delete/change the parameter -> edit Y Axis -> check decimal was able to change #### feature/inspection tab double click **Purpose** 1. [Inspection] prevent user double-click the tab, lead to same page be refreshed 2. [Inspection] add tab icon (open inspection page in _blank) 3. [Inspection] update tab icon **Test Case** 1. test for Inspection - [x] click the actived tab -> check page isn't refreshed - [x] click the tab -> open the inspection page in new tab page ### Tingwei #### [Fix] Translation text of the delete device dialog change to replacing {keyword}. **Purpose** 1. [Fix] Translation text of the delete device dialog change to replacing {keyword}. 2. [Fix] Fix tw translation text **Test Case** 1. test purpose 1 - [x] tw -> check delete device dialog text - [x] en -> check delete device dialog text - [x] cn -> check delete device dialog text - [x] jp -> check delete device dialog text 2. test purpose 2 - [x] check https://docs.google.com/spreadsheets/d/11nZyjyBx9ewp7I964hN1H492V0q9Hyo0EGo8Oa_ucCA/edit#gid=2125294650