mirror of
https://github.com/divkit/divkit.git
synced 2026-05-07 20:02:32 +00:00
cb302ed3d6
commit_hash:cf549eb767e14942cf35ada56cd99b45a0400c76
4309 lines
118 KiB
JSON
4309 lines
118 KiB
JSON
{
|
|
"tests": [
|
|
{
|
|
"title": "Transition animations with delay",
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Tap \"Test Button\"",
|
|
"Tap \"Test Button\" again"
|
|
],
|
|
"expected_results": [
|
|
"The purple rectangle should appear animatedly",
|
|
"The purple rectangle should disappear animatedly"
|
|
],
|
|
"file": "animations/transition-animations-with-delay.json",
|
|
"case_id": 471
|
|
},
|
|
{
|
|
"title": "WebP animation",
|
|
"case_id": 487,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations",
|
|
"DivGifImage"
|
|
],
|
|
"expected_results": [
|
|
"Both animated WebP images are displayed and animated correctly"
|
|
],
|
|
"file": "animations/webp_animation.json"
|
|
},
|
|
{
|
|
"title": "Webp animation usages",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Behavior differs, there is another case for web."
|
|
},
|
|
"tags": [
|
|
"Animations",
|
|
"DivImage",
|
|
"DivGifImage"
|
|
],
|
|
"steps": [
|
|
"Wait for animation frame to change"
|
|
],
|
|
"expected_results": [
|
|
"Animation is playing only in case 3 (in div-gif-image). In other cases image is static."
|
|
],
|
|
"file": "animations/webp_animation_usages.json",
|
|
"case_id": 492
|
|
},
|
|
{
|
|
"title": "Copy to clipboard",
|
|
"case_id": 13,
|
|
"tags": [
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"Tap to copy url button and paste clipboard to input",
|
|
"Tap to copy string button and paste clipboard to input"
|
|
],
|
|
"expected_results": [
|
|
"At input pasted url - 'https://yandex.ru'",
|
|
"At input pasted string - 'Copied string'"
|
|
],
|
|
"file": "actions/copy-to-clipboard.json"
|
|
},
|
|
{
|
|
"title": "Focus action 2",
|
|
"case_id": 14,
|
|
"platforms": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"click on every button",
|
|
"same, but click buttons with the keyboard (Tab + Enter)"
|
|
],
|
|
"expected_results": [
|
|
"related element is selected"
|
|
],
|
|
"file": "actions/focus-element.json"
|
|
},
|
|
{
|
|
"title": "Clear focus actions",
|
|
"case_id": 165,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-action/focus-actions.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-action/focus-actions.json"
|
|
},
|
|
"tags": [
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"click on button",
|
|
"Wait 2 seconds"
|
|
],
|
|
"expected_results": [
|
|
"input has focus, label says that timer is started",
|
|
"input had lost the focus, label says that timer is finished"
|
|
],
|
|
"file": "actions/clear-focus.json"
|
|
},
|
|
{
|
|
"title": "Focus action",
|
|
"case_id": 14,
|
|
"platforms": [
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"click on Focus 1, 2, 3 button",
|
|
"click on \"Change state and focus\""
|
|
],
|
|
"expected_results": [
|
|
"related element is selected",
|
|
"button changes to input and it gets focus"
|
|
],
|
|
"file": "actions/focus-element-mobile.json"
|
|
},
|
|
{
|
|
"title": "Simple tap",
|
|
"case_id": 15,
|
|
"tags": [
|
|
"DivAction"
|
|
],
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Tap on text 'Click on me'"
|
|
],
|
|
"expected_results": [
|
|
"Text 'Click on me' changed to 'You clicked on me'",
|
|
"Second click changes text to 'Click on me'"
|
|
],
|
|
"file": "simple_tap.json"
|
|
},
|
|
{
|
|
"title": "Long tap",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"Long tap on button 'Long tap menu'"
|
|
],
|
|
"expected_results": [
|
|
"Menu with buttons 'show' and 'hide' is appearing",
|
|
"longtap_actions logged"
|
|
],
|
|
"file": "long_tap.json",
|
|
"case_id": 443
|
|
},
|
|
{
|
|
"title": "Hover and press",
|
|
"case_id": 208,
|
|
"tags": [
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"Hover the top button with cursor or stylus",
|
|
"Move the cursor away from the top button",
|
|
"Press and hold the bottom button",
|
|
"Release the bottom button"
|
|
],
|
|
"expected_results": [
|
|
"Button state changes to 'Hovered'",
|
|
"Button state changes to 'Not hovered'",
|
|
"Button state changes to 'Pressed'",
|
|
"Button state changes to 'Not pressed'"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"file": "actions/hover-and-press.json"
|
|
},
|
|
{
|
|
"title": "Tab swipe",
|
|
"case_id": 16,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivTabs",
|
|
"swipe"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right"
|
|
],
|
|
"expected_results": [
|
|
"Tab changes depending on the swipe direction",
|
|
"Tabs changes is logged"
|
|
],
|
|
"file": "tabs_max_height.json"
|
|
},
|
|
{
|
|
"title": "Tabs with dynamic height swipe",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivTabs",
|
|
"swipe"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right"
|
|
],
|
|
"expected_results": [
|
|
"Tab changes depending on the swipe direction",
|
|
"Each page has a different height",
|
|
"The height of the pages changes smoothly when switching"
|
|
],
|
|
"file": "tabs_with_dynamic_height.json",
|
|
"case_id": 476
|
|
},
|
|
{
|
|
"title": "Tab swipe restricted",
|
|
"case_id": 17,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivTabs",
|
|
"swipe"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right"
|
|
],
|
|
"expected_results": [
|
|
"Tab not changed",
|
|
"Tab changes on header click"
|
|
],
|
|
"file": "tabs_disabled_switch_tabs_by_swipe.json"
|
|
},
|
|
{
|
|
"title": "Gallery scroll",
|
|
"case_id": 18,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivGallery",
|
|
"scroll"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right"
|
|
],
|
|
"expected_results": [
|
|
"Content is changes depending on scroll direction",
|
|
"Gallery scroll is logged"
|
|
],
|
|
"file": "gallery/gallery_swipe.json"
|
|
},
|
|
{
|
|
"title": "Incompletely filled gallery throws taps",
|
|
"case_id": 19,
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"steps": [
|
|
"Click on the empty space inside the gallery"
|
|
],
|
|
"expected_results": [
|
|
"Check view shown with text 'Last caught action: tap_container'"
|
|
],
|
|
"file": "gallery/incompletely_filled_gallery_throws_taps.json"
|
|
},
|
|
{
|
|
"title": "Paged gallery scroll",
|
|
"case_id": 20,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivGallery",
|
|
"scroll"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right"
|
|
],
|
|
"expected_results": [
|
|
"Content is changes page by page",
|
|
"Gallery scroll is logged"
|
|
],
|
|
"file": "gallery/gallery_swipe_paged.json"
|
|
},
|
|
{
|
|
"title": "Gallery item actions",
|
|
"case_id": 21,
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right",
|
|
"Click on buttons"
|
|
],
|
|
"expected_results": [
|
|
"Content is changes depending on scroll direction or clicked buttons",
|
|
"Gallery scroll is logged"
|
|
],
|
|
"file": "gallery/gallery-item-actions.json"
|
|
},
|
|
{
|
|
"title": "Gallery item actions typed",
|
|
"case_id": 172,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivGallery",
|
|
"TypedActions"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right",
|
|
"Click on buttons"
|
|
],
|
|
"expected_results": [
|
|
"Content is changes depending on scroll direction or clicked buttons",
|
|
"Gallery scroll is logged",
|
|
"first and last galleries are scrolled without animation"
|
|
],
|
|
"file": "gallery/gallery-item-actions-typed.json"
|
|
},
|
|
{
|
|
"title": "Gallery default item states",
|
|
"case_id": 22,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"steps": [
|
|
"Click on button 'Expand' in gallery item",
|
|
"Click on button 'Collapse' in expanded items"
|
|
],
|
|
"expected_results": [
|
|
"Only clicked gallery item change state"
|
|
],
|
|
"file": "gallery/gallery_default_item_states.json"
|
|
},
|
|
{
|
|
"title": "Gallery paging default item states",
|
|
"case_id": 23,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"steps": [
|
|
"Click on button 'Expand' in gallery item",
|
|
"Click on button 'Collapse' in expanded items",
|
|
"Scroll gallery"
|
|
],
|
|
"expected_results": [
|
|
"Only clicked gallery item change state",
|
|
"Gallery scrolls page by page"
|
|
],
|
|
"file": "gallery/gallery_paging_default_item_states.json"
|
|
},
|
|
{
|
|
"title": "Zoomable gallery",
|
|
"case_id": 24,
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"expected_results": [
|
|
"Image in gallery can be zoomed"
|
|
],
|
|
"file": "gallery/zoomable-gallery.json"
|
|
},
|
|
{
|
|
"title": "Gallery bottom multiline",
|
|
"case_id": 25,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"file": "gallery/gallery-bottom-multiline.json"
|
|
},
|
|
{
|
|
"title": "Gallery bottom multiline selected actions",
|
|
"case_id": 26,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"file": "gallery/gallery-bottom-multiline-selected-action.json"
|
|
},
|
|
{
|
|
"title": "Gallery bottom singleline",
|
|
"case_id": 27,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"file": "gallery/gallery-bottom-singleline.json"
|
|
},
|
|
{
|
|
"title": "Gallery top multiline",
|
|
"case_id": 28,
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"file": "gallery/gallery-top-multiline.json"
|
|
},
|
|
{
|
|
"title": "Pager scroll",
|
|
"case_id": 29,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivPager",
|
|
"scroll"
|
|
],
|
|
"steps": [
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right"
|
|
],
|
|
"expected_results": [
|
|
"Content is changes page by page",
|
|
"Page change is logged"
|
|
],
|
|
"file": "pager/pager.json"
|
|
},
|
|
{
|
|
"title": "Pager item actions",
|
|
"case_id": 30,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivPager"
|
|
],
|
|
"file": "pager/pager-item-actions.json"
|
|
},
|
|
{
|
|
"title": "Pager selected actions",
|
|
"case_id": 31,
|
|
"tags": [
|
|
"DivPager"
|
|
],
|
|
"file": "pager/pager-selected-actions.json"
|
|
},
|
|
{
|
|
"title": "Pager default item states",
|
|
"case_id": 32,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivPager"
|
|
],
|
|
"file": "pager/pager_default_item_states.json"
|
|
},
|
|
{
|
|
"title": "Pager with infinite scroll",
|
|
"case_id": 144,
|
|
"platforms": [
|
|
"ios",
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivPager",
|
|
"DivIndicator"
|
|
],
|
|
"file": "pager/pager_infinite_scroll.json"
|
|
},
|
|
{
|
|
"title": "Pager with infinite scroll, slow reverse swipe",
|
|
"platforms": [
|
|
"ios",
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivPager"
|
|
],
|
|
"steps": [
|
|
"Very slowly and smoothly make a not very long swipe back, from the first element (item 1) to the last (item 4) approximately"
|
|
],
|
|
"expected_results": [
|
|
"The pager correctly moves to the last element or returns to the current one, depending on the length of the swipe"
|
|
],
|
|
"file": "pager/pager_infinite_scroll2.json",
|
|
"case_id": 482
|
|
},
|
|
{
|
|
"title": "Pager with infinite scroll, start scroll alignment and paddings",
|
|
"case_id": 161,
|
|
"platforms": [
|
|
"ios",
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivPager",
|
|
"DivIndicator"
|
|
],
|
|
"file": "pager/pager_infinite_scroll_with_start_paddings.json"
|
|
},
|
|
{
|
|
"title": "Action animations",
|
|
"case_id": 33,
|
|
"tags": [
|
|
"DivAnimation"
|
|
],
|
|
"steps": [
|
|
"Click on each button with animations"
|
|
],
|
|
"expected_results": [
|
|
"The animation written on the button appears",
|
|
"Animation finished on long click finish"
|
|
],
|
|
"file": "action_animation/animations.json"
|
|
},
|
|
{
|
|
"title": "Recommendation slider",
|
|
"case_id": 1,
|
|
"tags": [
|
|
"Slider"
|
|
],
|
|
"automated": [
|
|
"android"
|
|
],
|
|
"priority": "blocker",
|
|
"steps": [
|
|
"Interact with the slider"
|
|
],
|
|
"expected_results": [
|
|
"Pointer position is changes and change button text"
|
|
],
|
|
"file": "slider_nps.json"
|
|
},
|
|
{
|
|
"title": "Slider with two pointers",
|
|
"case_id": 12,
|
|
"tags": [
|
|
"Slider"
|
|
],
|
|
"automated": [
|
|
"android"
|
|
],
|
|
"priority": "critical",
|
|
"steps": [
|
|
"Interact with the slider"
|
|
],
|
|
"expected_results": [
|
|
"Pointer position is changes and change button text"
|
|
],
|
|
"file": "double_slider.json"
|
|
},
|
|
{
|
|
"title": "Slider preferences",
|
|
"case_id": 34,
|
|
"tags": [
|
|
"Slider"
|
|
],
|
|
"steps": [
|
|
"Interact with slider"
|
|
],
|
|
"expected_results": [
|
|
"Slider pointer change it's position"
|
|
],
|
|
"file": "slider_presets.json"
|
|
},
|
|
{
|
|
"title": "Disabled slider",
|
|
"case_id": 182,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Slider"
|
|
],
|
|
"steps": [
|
|
"Tap the \"Disable\" button and try to change slider value",
|
|
"Tap the \"Enable\" button and try to change slider value"
|
|
],
|
|
"expected_results": [
|
|
"Value is not changed",
|
|
"Value changes"
|
|
],
|
|
"file": "slider_is_enabled.json"
|
|
},
|
|
{
|
|
"title": "Root state switching",
|
|
"case_id": 35,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Press 'CHANGE STATE (TEMPORARY)'",
|
|
"Restart the app",
|
|
"Turn back to this scenario",
|
|
"Press 'CHANGE STATE'",
|
|
"Restart the app",
|
|
"Turn back to this scenario"
|
|
],
|
|
"expected_results": [
|
|
"button 'CHANGE STATE (TEMPORARY)' change state and save it between app restart",
|
|
"button 'CHANGE STATE' change state, but state resets after app restart"
|
|
],
|
|
"file": "root_state_switching.json"
|
|
},
|
|
{
|
|
"title": "Focus",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"steps": [
|
|
"Switch focus"
|
|
],
|
|
"expected_results": [
|
|
"Elements focus changes in order to switch"
|
|
],
|
|
"file": "focus.json",
|
|
"case_id": 444
|
|
},
|
|
{
|
|
"title": "Focus events",
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Switch focus to handler",
|
|
"Switch focus to idle"
|
|
],
|
|
"expected_results": [
|
|
"Start state of the right element is 'init'",
|
|
"When handler gets focus, state of the right element is 'focus'",
|
|
"When handler lost focus, state of the right element is 'blur'"
|
|
],
|
|
"file": "focus_actions.json",
|
|
"case_id": 445
|
|
},
|
|
{
|
|
"title": "Accessibility descriptions",
|
|
"case_id": 196,
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"steps": [
|
|
"Set russian language on device",
|
|
"Turn on Screen reader and set order of elements description to 'Состояние,название,тип'",
|
|
"Set focus on 'Элемент 1'",
|
|
"Listen to Screen reader",
|
|
"Double tap on screen",
|
|
"Set focus on 'Элемент 2'",
|
|
"Listen to Screen reader",
|
|
"Set focus on 'Элемент 3'"
|
|
],
|
|
"expected_results": [
|
|
"On 'Элемент 1' Screen reader should say 'Cейчас в состоянии 0; Элемент 1; Кнопка; Коснитесь дважды, чтобы активировать'",
|
|
"After double tap Screen reader should say 'Сейчас в состоянии 1'",
|
|
"On 'Элемент 2' Screen reader should say 'Элемент 2; Кнопка; Нажмите на кнопку, чтобы что-то произошло'",
|
|
"On 'Элемент 3' Screen reader should say 'Элемент 3; Кнопка'"
|
|
],
|
|
"file": "accessibility/descriptions.json"
|
|
},
|
|
{
|
|
"title": "Accessibility image range",
|
|
"case_id": 197,
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Enable Screen reader before installing the test application and opening the test case",
|
|
"Set focus on text",
|
|
"Listen to Screen reader",
|
|
"Set focus on image in text",
|
|
"Listen to Screen reader",
|
|
"Click on image in text"
|
|
],
|
|
"expected_results": [
|
|
"After setting focus to text you can hear the text itself.",
|
|
"After setting focus on image, you should here that this image is a button and you can click on it to trigger an action.",
|
|
"After click on image action triggered"
|
|
],
|
|
"file": "accessibility/image_and_clickable_range.json"
|
|
},
|
|
{
|
|
"title": "Accessibility types",
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Tap on elements"
|
|
],
|
|
"expected_results": [
|
|
"Screen reader should read elements correctly according to their accessibility types."
|
|
],
|
|
"file": "accessibility/types.json",
|
|
"case_id": 446
|
|
},
|
|
{
|
|
"title": "Accessibility auto types",
|
|
"case_id": 198,
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Tap on elements"
|
|
],
|
|
"expected_results": [
|
|
"Screen reader should read correct element types. Separator and image without description must be not focusable with screen reader."
|
|
],
|
|
"file": "accessibility/auto_types.json"
|
|
},
|
|
{
|
|
"title": "Default Accessibility mode",
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Focus on items from top to bottom"
|
|
],
|
|
"expected_results": [
|
|
"When focusing on 1 item you'll hear 'Это Элемент 1'",
|
|
"When focusing on group of 2 and 3 items you will hear 'Это Элемент 2, Это Элемент 3'",
|
|
"Can't focus 4 element"
|
|
],
|
|
"file": "accessibility/mode/default.json",
|
|
"case_id": 447
|
|
},
|
|
{
|
|
"title": "Merge Accessibility mode",
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Focus on items from top to bottom"
|
|
],
|
|
"expected_results": [
|
|
"Focusing on all card",
|
|
"You will hear 'Это Элемент 1, Это Элемент 2, Это Элемент 3'",
|
|
"On activation menu with text 'Элемент 1, Элемент 2, Элемент 3' appears",
|
|
"On focus Screen reader should not say 'Коснитесь дважды и удерживайте'"
|
|
],
|
|
"file": "accessibility/mode/merge.json",
|
|
"case_id": 448
|
|
},
|
|
{
|
|
"title": "Exclude Accessibility mode",
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Focus on items from top to bottom"
|
|
],
|
|
"expected_results": [
|
|
"Focus on 5-th item",
|
|
"Услышим 'Это Элемент 5'",
|
|
"При выключенном Screen reader на каждой кнопке при тапе должно появляться меню с названием этой кнопки"
|
|
],
|
|
"file": "accessibility/mode/exclude.json",
|
|
"case_id": 449
|
|
},
|
|
{
|
|
"title": "Accessibility mode changes",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Change accessibility mode for items",
|
|
"Try to focus"
|
|
],
|
|
"expected_results": [
|
|
"Elements should be focusable if their accessibility mode is default or merge and they have no ancestors with merge accessibility mode",
|
|
"Elements shouldn't be focusable if their accessibility mode if exclude"
|
|
],
|
|
"file": "accessibility/mode/mode_change.json",
|
|
"case_id": 450
|
|
},
|
|
{
|
|
"title": "Checkbox with accessibility",
|
|
"case_id": 194,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Toggle checkbox"
|
|
],
|
|
"expected_results": [
|
|
"Checkbox with text can be focused. Checkbox is read by screen reader as 'approved'.",
|
|
"Checkbox changes state on activasion. State changes is read by screen reader in a appropriate way ('Checked' / 'Unchecked' or similar)."
|
|
],
|
|
"file": "accessibility/checkbox.json"
|
|
},
|
|
{
|
|
"title": "Switch with accessibility",
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Accessibility"
|
|
],
|
|
"steps": [
|
|
"Turn on Screen reader",
|
|
"Focus on switch",
|
|
"Toggle switch"
|
|
],
|
|
"expected_results": [
|
|
"Switch can be focused. When focused, the screen reader announces it's state, 'Access to the microphone' and 'switch'.",
|
|
"On activation, the screen reader announces the new state."
|
|
],
|
|
"file": "accessibility/switch_with_accessibility.json",
|
|
"case_id": 478
|
|
},
|
|
{
|
|
"title": "Actions on tap",
|
|
"case_id": 36,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Tap on top button",
|
|
"Double tap on top button",
|
|
"Long tap on top button",
|
|
"Tap on 2-nd button",
|
|
"Double tap on 2-nd button",
|
|
"Long tap on 2-nd button",
|
|
"Tap on 3-rd button",
|
|
"Double tap on 3-rd button",
|
|
"Long tap on 3-rd button",
|
|
"Tap on image on the bottom button",
|
|
"Long tap between buttons"
|
|
],
|
|
"expected_results": [
|
|
"Menu with text 'Single tap' appears with delay",
|
|
"Menu with text 'Double tap' appears",
|
|
"Menu with text 'Long tap' appears",
|
|
"Menu with text 'Single tap' appears without delay",
|
|
"Menu with text 'Single tap' appears and than disappears",
|
|
"Menu with text 'Long tap' appears",
|
|
"Menu with text 'Single tap' appears with delay",
|
|
"Menu with text 'Double tap' appears",
|
|
"Menu with text 'Long tap on container' appears for container",
|
|
"Menu with text 'Single tap on child' appears",
|
|
"Menu with text 'Long tap on container' appears for container"
|
|
],
|
|
"file": "button_actions.json"
|
|
},
|
|
{
|
|
"title": "Div errors visualization",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"priority": "critical",
|
|
"expected_results": [
|
|
"The card displays a red button with the number 1",
|
|
"Click on red button shows error INVALID_VALUE",
|
|
"Click on the cross hide screen with error details",
|
|
"Click on save button copy json with errors",
|
|
"Click on text 'Generate error!' add errors 'Value 'wrong_value' for key 'alignment_horizontal' at path '@{alignment}' is not valid'"
|
|
],
|
|
"file": "error_visual_monitor.json",
|
|
"case_id": 451
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Fade full",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears and disappears changing the transparency"
|
|
],
|
|
"file": "animations/transition/fade_full_src.json",
|
|
"case_id": 452
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Fade part",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears and disappears changing the transparency starting or ending with transparency = 0.5"
|
|
],
|
|
"file": "animations/transition/fade_part_src.json",
|
|
"case_id": 453
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Scale full",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears and disappears changing the scale"
|
|
],
|
|
"file": "animations/transition/scale_full_src.json",
|
|
"case_id": 454
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Scale part",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears and disappears changing the scale starting or ending with scale = 0.75"
|
|
],
|
|
"file": "animations/transition/scale_part_src.json",
|
|
"case_id": 455
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Slide full",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears and disappears sliding from under the top edge of the card"
|
|
],
|
|
"file": "animations/transition/slide_full_src.json",
|
|
"case_id": 456
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Slide part",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears and disappears sliding from under the top edge of the card, but not reaching it"
|
|
],
|
|
"file": "animations/transition/slide_part_src.json",
|
|
"case_id": 457
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Set",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears and disappears changing transparency and sliding from center to edge"
|
|
],
|
|
"file": "animations/transition/set_src.json",
|
|
"case_id": 458
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Diff ids",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should appears from different edges of card"
|
|
],
|
|
"file": "animations/transition/change_bounds_diff_ids_src.json",
|
|
"case_id": 459
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Diff sizes",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should change it's size"
|
|
],
|
|
"file": "animations/transition/change_bounds_diff_sizes_src.json",
|
|
"case_id": 460
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Diff types",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should change text moving across the screen"
|
|
],
|
|
"file": "animations/transition/change_bounds_diff_types_src.json",
|
|
"case_id": 461
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Change bounds same ids",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'GO'",
|
|
"After image appears press 'GO BACK'"
|
|
],
|
|
"expected_results": [
|
|
"Image should move horizontally across the screen"
|
|
],
|
|
"file": "animations/transition/change_bounds_same_ids_src.json",
|
|
"case_id": 462
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Article",
|
|
"case_id": 38,
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Click on 'EXPAND'",
|
|
"Click on 'SHOW COMMENTS'",
|
|
"After expanding of elements click on 'COLLAPSE'"
|
|
],
|
|
"expected_results": [
|
|
"Expanding and collapsing the elements should be with animation"
|
|
],
|
|
"file": "animations/article.json"
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Article with transitions",
|
|
"case_id": 39,
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Click on 'EXPAND'",
|
|
"Click on 'SHOW COMMENTS'",
|
|
"After expanding of elements click on 'COLLAPSE'"
|
|
],
|
|
"expected_results": [
|
|
"Expanding end collapsing the elements should be with animation"
|
|
],
|
|
"file": "animations/article_with_transitions.json"
|
|
},
|
|
{
|
|
"title": "Synchronizing multiple change bounds animations. Blink",
|
|
"case_id": 40,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "animation_in/animation_out is deprecated"
|
|
},
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Click on 'BLINK'"
|
|
],
|
|
"expected_results": [
|
|
"Red circle should appear and disappear"
|
|
],
|
|
"file": "animations/blink.json"
|
|
},
|
|
{
|
|
"title": "Change bounds transitions ignore start_delay",
|
|
"case_id": 41,
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Click on tooltip"
|
|
],
|
|
"expected_results": [
|
|
"A few seconds after the card is shown, a tooltip should appear",
|
|
"The text should disappear first, and the background after a short delay"
|
|
],
|
|
"file": "animations/mute_notification.json"
|
|
},
|
|
{
|
|
"title": "Div with corner radius and shadow set is clipped during transition animation",
|
|
"case_id": 184,
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Click on yellow rectangle",
|
|
"Repeat if necessary"
|
|
],
|
|
"expected_results": [
|
|
"Blue circle still a circle while transition is in progress"
|
|
],
|
|
"file": "animations/transient_div_with_clip_and_shadow.json"
|
|
},
|
|
{
|
|
"title": "State transition any change",
|
|
"case_id": 42,
|
|
"file": "animations/transition/state_transition_any_change.json"
|
|
},
|
|
{
|
|
"title": "State transition data change",
|
|
"case_id": 44,
|
|
"file": "animations/transition/state_transition_data_change.json"
|
|
},
|
|
{
|
|
"title": "State transition state change",
|
|
"case_id": 45,
|
|
"file": "animations/transition/state_transition_state_change.json"
|
|
},
|
|
{
|
|
"title": "Inner state transition any change",
|
|
"case_id": 46,
|
|
"file": "animations/transition/inner_state_transition_any_change.json"
|
|
},
|
|
{
|
|
"title": "Inner state transition data change",
|
|
"case_id": 46,
|
|
"file": "animations/transition/inner_state_transition_data_change.json"
|
|
},
|
|
{
|
|
"title": "Disappear transition of div with shadow",
|
|
"case_id": 171,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"ios": "Android-specific test",
|
|
"web": "Android-specific test"
|
|
},
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Click on 'Outline shadow'.",
|
|
"Click on 'Custom shadow'.",
|
|
"Click on 'Inner custom shadow'."
|
|
],
|
|
"expected_results": [
|
|
"Shadow of the 'Outline shadow' button should dissapear before animation start.",
|
|
"Shadow of the 'Custom shadow' button should dissapear before animation start.",
|
|
"Shadow should disappear along with the 'Inner custom shadow' button."
|
|
],
|
|
"file": "animations/transition/transition_out_of_div_with_shadow.json"
|
|
},
|
|
{
|
|
"title": "Lottie animation (repeat_mode=restart, repeat_count=5)",
|
|
"case_id": 48,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations",
|
|
"lottie"
|
|
],
|
|
"expected_results": [
|
|
"Spinner animation will continue 5 times and then stop"
|
|
],
|
|
"file": "animations/lottie/spinner_restart_repeat_mode.json"
|
|
},
|
|
{
|
|
"title": "Lottie animation (repeat_mode=reverse, repeat_count=3)",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations",
|
|
"lottie"
|
|
],
|
|
"expected_results": [
|
|
"Spinner changes spin direction 3 times and stops"
|
|
],
|
|
"file": "animations/lottie/spinner_reverse_repeat_mode.json",
|
|
"case_id": 463
|
|
},
|
|
{
|
|
"title": "Lottie animation (repeat_mode=restart, repeat_count=-1)",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations",
|
|
"lottie"
|
|
],
|
|
"expected_results": [
|
|
"Infinite spinner animation."
|
|
],
|
|
"file": "animations/lottie/spinner.json",
|
|
"case_id": 464
|
|
},
|
|
{
|
|
"title": "Lottie params",
|
|
"case_id": 190,
|
|
"platforms": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations",
|
|
"lottie"
|
|
],
|
|
"expected_results": [
|
|
"Animation should be rendered correctly with the different combination of properties"
|
|
],
|
|
"file": "animations/lottie/params.json"
|
|
},
|
|
{
|
|
"title": "For the reverse animation of the action, a direct interpolator is used",
|
|
"case_id": 51,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"file": "action_animation/button_press_action_animations.json"
|
|
},
|
|
{
|
|
"title": "Simple variable animator",
|
|
"case_id": 178,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animators"
|
|
],
|
|
"steps": [
|
|
"Press \"Start\" button",
|
|
"Wait for completion",
|
|
"Press \"Start\" button again",
|
|
"Press \"Stop\" button before animation ends"
|
|
],
|
|
"expected_results": [
|
|
"Spinner performs full rotation cycle and changes color. If stopped it stands still."
|
|
],
|
|
"file": "animations/animators/simple_variable_animator.json"
|
|
},
|
|
{
|
|
"title": "Repeating variable animator",
|
|
"case_id": 177,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animators"
|
|
],
|
|
"steps": [
|
|
"Press \"Start\" button",
|
|
"Wait for completion",
|
|
"Press \"Start\" button again",
|
|
"Press \"Stop\" button before animation ends"
|
|
],
|
|
"expected_results": [
|
|
"Spinner performs full rotation cycle and changes color 4 times. If stopped it stands still."
|
|
],
|
|
"file": "animations/animators/repeating_variable_animator.json"
|
|
},
|
|
{
|
|
"title": "Gradients with animators",
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animators"
|
|
],
|
|
"expected_results": [
|
|
"Gradients's positions should changes dynamically."
|
|
],
|
|
"file": "animations/animators/gradients_animator.json",
|
|
"case_id": 479
|
|
},
|
|
{
|
|
"title": "Synchronizing transition change animation with running div-animator.",
|
|
"platforms": [
|
|
"ios",
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'Animate'"
|
|
],
|
|
"expected_results": [
|
|
"The rectangle color change should be animated",
|
|
"Image resizing should be animated"
|
|
],
|
|
"file": "animations/animators/transition_change_with_animators.json",
|
|
"case_id": 484
|
|
},
|
|
{
|
|
"title": "Synchronizing transition out animation with running div-animator.",
|
|
"platforms": [
|
|
"ios",
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Press button with text 'Animate'"
|
|
],
|
|
"expected_results": [
|
|
"The rectangle color change should be animated",
|
|
"Image should disappear and appear with animations"
|
|
],
|
|
"file": "animations/animators/transition_out_with_animators.json",
|
|
"case_id": 485
|
|
},
|
|
{
|
|
"title": "Infinite variable animator",
|
|
"case_id": 174,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animators"
|
|
],
|
|
"steps": [
|
|
"Press \"Start\" button",
|
|
"Wait for couple of cycles",
|
|
"Press \"Stop\" button"
|
|
],
|
|
"expected_results": [
|
|
"Spinner performs multiple rotation cycles until being stopped. When stopped it reset rotation angle and color."
|
|
],
|
|
"file": "animations/animators/infinite_variable_animator.json"
|
|
},
|
|
{
|
|
"title": "Infinite alternating variable animator",
|
|
"case_id": 173,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Animators"
|
|
],
|
|
"steps": [
|
|
"Press \"Start\" button",
|
|
"Wait for couple of cycles",
|
|
"Press \"Stop\" button"
|
|
],
|
|
"expected_results": [
|
|
"Spinner performs multiple rotation cycles alternating direction until being stopped. When stopped it reset rotation angle and color."
|
|
],
|
|
"file": "animations/animators/infinite_alternating_variable_animator.json"
|
|
},
|
|
{
|
|
"title": "Visibility actions in gallery",
|
|
"case_id": 52,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions"
|
|
],
|
|
"steps": [
|
|
"Scroll the gallery",
|
|
"Check logs"
|
|
],
|
|
"expected_results": [
|
|
"Gallery data was opened",
|
|
"items visibility logged, for example 'logViewShown(cardId = ..., id = item/01)'"
|
|
],
|
|
"file": "gallery/gallery_swipe.json"
|
|
},
|
|
{
|
|
"title": "Disappear actions in gallery",
|
|
"case_id": 54,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"platforms": [
|
|
"ios",
|
|
"web",
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Disappear_actions"
|
|
],
|
|
"steps": [
|
|
"Scroll the gallery",
|
|
"Check logs"
|
|
],
|
|
"expected_results": [
|
|
"Gallery data was opened",
|
|
"The text changes along with the item that disappeared",
|
|
"Items disappearing logged, for example 'logViewShown(cardId = ..., id = item/01)'"
|
|
],
|
|
"file": "gallery/gallery_swipe_disappear_action.json"
|
|
},
|
|
{
|
|
"title": "Visibility actions in pager",
|
|
"case_id": 55,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions",
|
|
"DivPager"
|
|
],
|
|
"steps": [
|
|
"Scroll the pager",
|
|
"Check logs"
|
|
],
|
|
"expected_results": [
|
|
"Pager data was opened",
|
|
"items visibility logged, for example 'logViewShown(cardId = ..., id = content_item_show:1)'"
|
|
],
|
|
"file": "visibility_actions/pager.json"
|
|
},
|
|
{
|
|
"title": "Visibility actions performed and logged in pager",
|
|
"case_id": 56,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions",
|
|
"DivPager"
|
|
],
|
|
"steps": [
|
|
"Swipe cards",
|
|
"Check logs"
|
|
],
|
|
"expected_results": [
|
|
"Logged evens logViewShown(cardId = ..., id = content_item_show0) logViewShown(cardId = ..., id = container)",
|
|
"Cards description was changed"
|
|
],
|
|
"file": "visibility_actions/swipe_div_pager.json"
|
|
},
|
|
{
|
|
"title": "Visibility action for child of item in gallery",
|
|
"case_id": 57,
|
|
"automated": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"visibility_actions",
|
|
"DivGallery"
|
|
],
|
|
"steps": [
|
|
"Scroll to positions from 0 to 4",
|
|
"Check view shown with text 'Last caught visibility action: item_{item_position}'"
|
|
],
|
|
"expected_results": [
|
|
"View shown with text 'Last caught visibility action: item_{item_position}'"
|
|
],
|
|
"file": "visibility_actions/gallery_child_of_item.json"
|
|
},
|
|
{
|
|
"title": "Visibility actions is_enabled",
|
|
"case_id": 58,
|
|
"automated": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions",
|
|
"disappear_actions"
|
|
],
|
|
"steps": [
|
|
"Scroll to last position",
|
|
"Check view shown with text 'Last caught visibility action: none'",
|
|
"Click on view with text 'Enable actions'",
|
|
"Check view shown with text 'Last caught visibility action: item_4'"
|
|
],
|
|
"expected_results": [
|
|
"When actions disabled view shown with text 'Last caught visibility action: none'",
|
|
"When actions enabled view shown with text 'Last caught visibility action: item_{index}'"
|
|
],
|
|
"file": "visibility_actions/is_enabled.json"
|
|
},
|
|
{
|
|
"title": "Actions is_enabled",
|
|
"case_id": 59,
|
|
"automated": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"actions"
|
|
],
|
|
"steps": [
|
|
"Click text 'Tested text'",
|
|
"Long click text 'Tested text'",
|
|
"Double click text 'Tested text'",
|
|
"Click on view with text 'Enable actions' and repeat steps before"
|
|
],
|
|
"expected_results": [
|
|
"When actions disabled view shown with text 'Last caught action: none'",
|
|
"When actions enabled view shown with text 'Last caught action: {click | long_click | double_click}'"
|
|
],
|
|
"file": "actions/is_enabled.json"
|
|
},
|
|
{
|
|
"title": "Send select Pager using Div2View.tryLogVisibility",
|
|
"case_id": 209,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions",
|
|
"DivPager"
|
|
],
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"steps": [
|
|
"Open the pager screen",
|
|
"Verify that no item visibility log is produced for the initially displayed item",
|
|
"Swipe to the next item",
|
|
"Check item visibility log"
|
|
],
|
|
"expected_results": [
|
|
"No DemoDiv2Logger visibility log should be produced for the initially displayed first item",
|
|
"After swiping to the next item, DemoDiv2Logger should log selected actions, for example: logPagerChangePage(cardId = card, currentPageIndex = 1, scrollDirection = next)"
|
|
],
|
|
"file": "visibility_actions/pager_selected_actions.json"
|
|
},
|
|
{
|
|
"title": "Visibility actions for default_item",
|
|
"case_id": 60,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions"
|
|
],
|
|
"steps": [
|
|
"Check logs"
|
|
],
|
|
"expected_results": [
|
|
"Card is opened",
|
|
"Card visibility logged, example logViewShown(cardId = ..., id = comments_counter_show:4)"
|
|
],
|
|
"file": "visibility_actions/default_item.json"
|
|
},
|
|
{
|
|
"title": "Nested visibility actions",
|
|
"case_id": 61,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions"
|
|
],
|
|
"steps": [
|
|
"Click EXPAND",
|
|
"Check logs"
|
|
],
|
|
"expected_results": [
|
|
"Elements are expanded",
|
|
"Visibility actions logged, example logViewShown(cardId = ..., id = separator) logViewShown(cardId = ..., id = text) logViewShown(cardId = ..., id = text2) logViewShown(cardId = ..., id = comment_state) logViewShown(cardId = ..., id = comment_01) logViewShown(cardId = ..., id = comment_02) logViewShown(cardId = ..., id = comment_03) logViewShown(cardId = ..., id = comment_04)"
|
|
],
|
|
"file": "visibility_actions/article.json"
|
|
},
|
|
{
|
|
"title": "Visibility action in visible block",
|
|
"case_id": 62,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-container/visibility_actions_visible_block.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-container/visibility_actions_visible_block.json"
|
|
},
|
|
"tags": [
|
|
"visibility_actions"
|
|
],
|
|
"steps": [
|
|
"Wait 2 seconds"
|
|
],
|
|
"expected_results": [
|
|
"Text is changed to 'Triggered!'"
|
|
],
|
|
"file": "visibility_actions/visibility_action.json"
|
|
},
|
|
{
|
|
"title": "Visibility actions in DivState",
|
|
"case_id": 63,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-state/visibility_actions_states.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-state/visibility_actions_states.json"
|
|
},
|
|
"tags": [
|
|
"DivState",
|
|
"visibility_actions"
|
|
],
|
|
"steps": [
|
|
"Press 'State 2' button",
|
|
"Wait 2 seconds"
|
|
],
|
|
"expected_results": [
|
|
"State changes",
|
|
"Text is changed to 'Triggered!'"
|
|
],
|
|
"file": "visibility_actions/states.json"
|
|
},
|
|
{
|
|
"title": "Variables in gallery",
|
|
"case_id": 64,
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"steps": [
|
|
"Check different combinations of gallery properties"
|
|
],
|
|
"expected_results": [
|
|
"'orientation=horizontal' - sets gallery orientation to horizontal",
|
|
"'orientation=vertical' - sets gallery orientation to vertical",
|
|
"'column_count=1' - sets amount of columns to 1",
|
|
"'column_count=2' - sets amount of columns to 2",
|
|
"'item_spacing=5' - sets spacing between items along main axis to 5",
|
|
"'item_spacing=25' - sets spacing between items along main axis to 25",
|
|
"'cross_spacing=5' - sets spacing between items along cross axis to 5 (if column_count > 1)",
|
|
"'cross_spacing=25' - sets spacing between items along cross axis to 25 (if column_count > 1)",
|
|
"'restrict_parent_scroll=false' - gallery scroll gestures don't get passed to parent element",
|
|
"'restrict_parent_scroll_true' - gallery scrolls gestures get passed to parent element",
|
|
"'item_color=#80ff0000' - sets color of items in gallery to pink",
|
|
"'item_color=#9614e000' - sets color of items in gallery to green",
|
|
"'paddings.left=10' - paddings of gallery: left - 10",
|
|
"'paddings.left=50' - paddings of gallery: left - 50",
|
|
"'paddings.right=10' - paddings of gallery: right - 10",
|
|
"'paddings.right=50' - paddings of gallery: right - 50",
|
|
"'paddings.top=10' - paddings of gallery: top - 10",
|
|
"'paddings.top=50' - paddings of gallery: top - 50",
|
|
"'paddings.bottom=10' - paddings of gallery: bottom - 10",
|
|
"'paddings.bottom=50' - paddings of gallery: bottom - 50",
|
|
"'item_text=Item text' - sets text in gallery items to 'Item text'",
|
|
"'item_text=ITEM TEXT' - sets text in gallery items to 'ITEM TEXT'"
|
|
],
|
|
"file": "variables/div_gallery.json"
|
|
},
|
|
{
|
|
"title": "Variables in pager",
|
|
"case_id": 65,
|
|
"tags": [
|
|
"DivPager"
|
|
],
|
|
"steps": [
|
|
"Check different combinations of pager properties"
|
|
],
|
|
"expected_results": [
|
|
"'orientation=horizontal' - sets pager orientation to horizontal",
|
|
"'orientation=vertical' - sets pager orientation to vertical",
|
|
"'fixed_width=50' - sets visible width of adjacent card to 50",
|
|
"'fixed_width=20' - sets visible width of adjacent card to 20",
|
|
"'percentage_width=75' - sets current card's width to 75% of pager's width",
|
|
"'percentage_width=95' - sets current card's width to 95% of pager's width",
|
|
"'paddings.left=10' - paddings of pager: left - 10",
|
|
"'paddings.left=50' - paddings of pager: left - 50",
|
|
"'paddings.right=10' - paddings of pager: right - 10",
|
|
"'paddings.right=50' - paddings of pager: right - 50",
|
|
"'paddings.top=0' - paddings of pager: top - 0",
|
|
"'paddings.top=20' - paddings of pager: top - 20",
|
|
"'paddings.bottom=0' - paddings of pager: bottom - 0",
|
|
"'paddings.bottom=20' - paddings of pager: bottom - 20",
|
|
"'item_text=Item' - sets text of text_blocks in format 'Item #'",
|
|
"'item_text=ITEM' - sets text of text_blocks in format 'ITEM #'"
|
|
],
|
|
"file": "variables/div_pager.json"
|
|
},
|
|
{
|
|
"title": "Variables in tabs",
|
|
"case_id": 66,
|
|
"tags": [
|
|
"DivTabs"
|
|
],
|
|
"steps": [
|
|
"Check different combinations of tabs properties."
|
|
],
|
|
"expected_results": [
|
|
"'dynamic_height = DYNAMIC' - each tab height matches its content height.",
|
|
"'dynamic_height = MAX_HEIGHT (for non-first-page)' - starting from the second tab, each tab height matches the maximum tab content height.",
|
|
"'tab.line_height = 20' - the line spacing of the tab text is 20.",
|
|
"'tab.line_height = 30' - the line spacing of the tab text is 30.",
|
|
"'tab.theme = YELLOW' - the tabs become yellow.",
|
|
"'tab.theme = PURPLE' - the tabs become purple.",
|
|
"'selected_tab = 7' - the 'Page index 7' tab becomes selected.",
|
|
"'selected_tab = 1' - the 'Page index 1' tab becomes selected.",
|
|
"'has_separator = true' - the horizontal separator is shown.",
|
|
"'has_separator = false' - the horizontal separator is hidden.",
|
|
"'separator.color = YELLOW' - the separator color becomes yellow.",
|
|
"'separator.color = PURPLE' - the separator color becomes purple.",
|
|
"'separator_paddings.top = 0' - the top padding of the horizontal separator is 0.",
|
|
"'separator_paddings.top = 20' - the top padding of the horizontal separator is 20.",
|
|
"'separator_paddings.bottom = 0' - the bottom padding of the horizontal separator is 0.",
|
|
"'separator_paddings.bottom = 20' - the bottom padding of the horizontal separator is 20.",
|
|
"'separator_paddings.left = 0' - the left padding of the horizontal separator is 0.",
|
|
"'separator_paddings.left = 50' - the left padding of the horizontal separator is 50.",
|
|
"'separator_paddings.right = 0' - the right padding of the horizontal separator is 0.",
|
|
"'separator_paddings.right = 50' - the right padding of the horizontal separator is 50.",
|
|
"'title_paddings.top = 0' - the top padding of the tabs container is 0.",
|
|
"'title_paddings.top = 20' - the top padding of the tabs container is 20.",
|
|
"'title_paddings.bottom = 0' - the bottom padding of the tabs container is 0.",
|
|
"'title_paddings.bottom = 20' - the bottom padding of the tabs container is 20.",
|
|
"'title_paddings.left = 0' - the left padding of the tabs container is 0.",
|
|
"'title_paddings.left = 50' - the left padding of the tabs container is 50.",
|
|
"'title_paddings.right = 0' - the right padding of the tabs container is 0.",
|
|
"'title_paddings.right = 50' - the right padding of the tabs container is 50."
|
|
],
|
|
"file": "variables/div_tabs.json"
|
|
},
|
|
{
|
|
"title": "Visibility in div-base",
|
|
"case_id": 67,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Check different combinations of visibility properties"
|
|
],
|
|
"expected_results": [
|
|
"On click on test button text field set correct visibility.",
|
|
"Showing text field is logged."
|
|
],
|
|
"file": "set_visibility.json"
|
|
},
|
|
{
|
|
"title": "Showing animation on image loaded",
|
|
"case_id": 68,
|
|
"tags": [
|
|
"Animations"
|
|
],
|
|
"expected_results": [
|
|
"Image appears with described animation"
|
|
],
|
|
"file": "action_animation/image_loading_animation.json"
|
|
},
|
|
{
|
|
"title": "Variables in DivIndicator",
|
|
"case_id": 69,
|
|
"tags": [
|
|
"DivIndicator"
|
|
],
|
|
"steps": [
|
|
"1. Open the case 'Variables' in DivIndicator.",
|
|
"2. Swipe through the gallery from start to finish.",
|
|
"3. Click all the buttons in the second column of properties one by one.",
|
|
"4. Click the 'Reset state' button."
|
|
],
|
|
"expected_results": [
|
|
"1. The case is opened.",
|
|
"2. When switching pages, the active dot in the indicator moves accordingly.",
|
|
"3. 'active item color = YELLOW' — the first indicator element turns yellow.",
|
|
"'active item scale = x2' — the first indicator element doubles in size.",
|
|
"'inactive item color = YELLOW' — all inactive indicator elements turn yellow.",
|
|
"'scale of furthest items = x0.3' — the last indicator element becomes 3 times smaller.",
|
|
"'animation of page change = WORM' — the indicator elements, starting from the second one, shift to the left closer to the first element.",
|
|
"'space between items = 30dp' — the space between the indicator elements increases.",
|
|
"'item width = 15dp' — the indicator elements become wider.",
|
|
"'item height = 15dp' — the indicator elements become taller.",
|
|
"'corners radius = 2dp' — the corner radius of the indicator elements decreases, making them more square.",
|
|
"'corners radius = 4dp' — the corner radius of the indicator elements increases, making them more rounded.",
|
|
"'indicator width = 150dp' — the indicator becomes narrower.",
|
|
"'indicator width = 300dp' — the indicator becomes wider.",
|
|
"'size unit = sp' — the size unit on the buttons changes, while the indicator itself does not change.",
|
|
"4. The indicator appearance returns to its initial state from step 1."
|
|
],
|
|
"file": "variables/div_indicator.json"
|
|
},
|
|
{
|
|
"title": "Variables in DivImage",
|
|
"case_id": 153,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-image/variables_div_image.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-image/variables_div_image.json"
|
|
},
|
|
"tags": [
|
|
"DivImage"
|
|
],
|
|
"steps": [
|
|
"Click on blue label \"tint color\"",
|
|
"Click on label \"img#1\"",
|
|
"Click on red label \"tint color\"",
|
|
"Click on label \"img#2\"",
|
|
"Click on blue label \"tint color\""
|
|
],
|
|
"expected_results": [
|
|
"Initially, there should be a red parallelogram on a green background",
|
|
"The red parallelogram has changed color to blue",
|
|
"The blue parallelogram has changed to the blue camera icon",
|
|
"The blue camera icon has changed color to red",
|
|
"The red camera icon has become a red stripe pattern",
|
|
"The red stripe pattern has changed color to blue"
|
|
],
|
|
"file": "variables/div_image.json"
|
|
},
|
|
{
|
|
"title": "Variables triggers",
|
|
"case_id": 71,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Triggers"
|
|
],
|
|
"steps": [
|
|
"When only left button clicked, text changes to 'left switched'",
|
|
"When only right button clicked, text changes to 'right switched'",
|
|
"When both button clicked, text changes to 'both switched'",
|
|
"When both buttons is inactive text state changes to initial"
|
|
],
|
|
"expected_results": [
|
|
"Text changes according to the button description"
|
|
],
|
|
"file": "variables/div_variable_triggers.json"
|
|
},
|
|
{
|
|
"title": "Variable triggers (modes)",
|
|
"case_id": 72,
|
|
"tags": [
|
|
"Triggers"
|
|
],
|
|
"steps": [
|
|
"'Thumb value' show current thumb position",
|
|
"'First selected positive position' show first selected positive thumb value",
|
|
"'Last selected positive position' show last selected positive value or move with thumb, if value > 0"
|
|
],
|
|
"expected_results": [
|
|
"The layout corresponds to switching buttons"
|
|
],
|
|
"file": "variables/div_variable_trigger_modes.json"
|
|
},
|
|
{
|
|
"title": "Variable triggers (closures)",
|
|
"case_id": 73,
|
|
"tags": [
|
|
"DivInput",
|
|
"Slider",
|
|
"Triggers",
|
|
"Functions"
|
|
],
|
|
"expected_results": [
|
|
"Slider and input values should be synchronized",
|
|
"When entering an incorrect value in text input - error shows"
|
|
],
|
|
"file": "variables/div_variable_trigger_loops.json"
|
|
},
|
|
{
|
|
"title": "Local variables",
|
|
"case_id": 155,
|
|
"automated": [
|
|
"android"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"variables"
|
|
],
|
|
"expected_results": [
|
|
"Click items",
|
|
"Corresponding variable values change"
|
|
],
|
|
"file": "variables/local.json"
|
|
},
|
|
{
|
|
"title": "Sequential animations",
|
|
"case_id": 74,
|
|
"steps": [
|
|
"Click on image"
|
|
],
|
|
"expected_results": [
|
|
"Heart will increase by 2 times in 2 seconds, then will increase by 4 times in 2 seconds"
|
|
],
|
|
"file": "animations/transition/transition_set.json"
|
|
},
|
|
{
|
|
"title": "Animations of switching tabs headers",
|
|
"case_id": 164,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivTabs",
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Switch items on each tab by clicking on the tab headers",
|
|
"Slowly swipe each tab"
|
|
],
|
|
"expected_results": [
|
|
"Look at the headers animation",
|
|
"1 tab has slide animation",
|
|
"2 tab has fade animation",
|
|
"3 tab has no animation"
|
|
],
|
|
"file": "animations/tab_titles_animations.json"
|
|
},
|
|
{
|
|
"title": "Text copying",
|
|
"case_id": 75,
|
|
"tags": [
|
|
"DivText"
|
|
],
|
|
"steps": [
|
|
"Double tap or long click on first text",
|
|
"Double tap or long click on second text"
|
|
],
|
|
"expected_results": [
|
|
"First text has a system highlighting, you can copy it. Second text has no highlighting."
|
|
],
|
|
"file": "selectable_text.json"
|
|
},
|
|
{
|
|
"title": "Text mask",
|
|
"platforms": [
|
|
"ios",
|
|
"web",
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"DivText"
|
|
],
|
|
"steps": [
|
|
"Click on both types of masks"
|
|
],
|
|
"expected_results": [
|
|
"Text should be revealed on click. Text layout should not change, masked and non-masked text should have the same width and height. Mask should not contain any extra space inside of it"
|
|
],
|
|
"file": "text-mask.json",
|
|
"case_id": 465
|
|
},
|
|
{
|
|
"title": "Nested change bounds transitions",
|
|
"case_id": 77,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Click 'PRESS HERE'",
|
|
"Click 'PRESS AGAIN'"
|
|
],
|
|
"expected_results": [
|
|
"After first click image appears with animation, the container extends with animation.",
|
|
"After second click extends button, text changes, container extends again."
|
|
],
|
|
"file": "action_animation/nested_change_bounds.json"
|
|
},
|
|
{
|
|
"title": "Text input (multiline)",
|
|
"case_id": 78,
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Tap on input field",
|
|
"Change text"
|
|
],
|
|
"expected_results": [
|
|
"Text under the input should be equal to text in input and change on input changes.",
|
|
"In the 'With actions' section, after pressing Enter, the text should change to 'Enter key tapped!'",
|
|
"Keyboard is hidden"
|
|
],
|
|
"file": "input/input_multiline.json"
|
|
},
|
|
{
|
|
"title": "Text input (single line)",
|
|
"case_id": 79,
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Tap on input field",
|
|
"Change text"
|
|
],
|
|
"expected_results": [
|
|
"Text under the input should be equal to text in input and change on input changes.",
|
|
"Max lines = 1. Line break is unavailable.",
|
|
"In the 'With actions' section, after pressing Enter, the text should change to 'Done key tapped!'",
|
|
"Keyboard is hidden"
|
|
],
|
|
"file": "input/input_single_line.json"
|
|
},
|
|
{
|
|
"title": "Text input max_length",
|
|
"case_id": 163,
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Tap on input field",
|
|
"Enter text with more than 10 characters"
|
|
],
|
|
"expected_results": [
|
|
"text in the field should not be longer than 10 characters"
|
|
],
|
|
"file": "input/input_max_length.json"
|
|
},
|
|
{
|
|
"title": "Text input (search input)",
|
|
"case_id": 170,
|
|
"platforms": [
|
|
"ios",
|
|
"web",
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Tap on input field",
|
|
"Change text",
|
|
"Tap on enter key"
|
|
],
|
|
"expected_results": [
|
|
"Enter key on keyboard has \"search\" type",
|
|
"In the 'With actions' section, after pressing Enter, the text should change to 'Search key tapped!'",
|
|
"Keyboard is hidden"
|
|
],
|
|
"file": "input/input_search.json"
|
|
},
|
|
{
|
|
"title": "Select",
|
|
"case_id": 80,
|
|
"tags": [
|
|
"DivSelect"
|
|
],
|
|
"steps": [
|
|
"Tap on select field",
|
|
"Select item"
|
|
],
|
|
"expected_results": [
|
|
"When selecting, the text in the select should change."
|
|
],
|
|
"file": "select.json"
|
|
},
|
|
{
|
|
"title": "Select with default item",
|
|
"case_id": 81,
|
|
"tags": [
|
|
"DivSelect"
|
|
],
|
|
"steps": [
|
|
"Tap on select field",
|
|
"Select item"
|
|
],
|
|
"expected_results": [
|
|
"When selecting, the text in the select should change."
|
|
],
|
|
"file": "select_with_default.json"
|
|
},
|
|
{
|
|
"title": "Manage VideoCustom",
|
|
"case_id": 210,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"VideoCustom"
|
|
],
|
|
"steps": [
|
|
"Tap on 'play', 'pause', 'reset'"
|
|
],
|
|
"expected_results": [
|
|
"On tap on 'play' video continue",
|
|
"On tap on 'pause' video pause",
|
|
"On tap on 'reset' video starts from the beginning",
|
|
"If video was paused using button 'pause', on tap on 'reset' rewind to the beginning, but still paused",
|
|
"If video wasn't paused, on tap on 'reset' the video starts playing from beginning"
|
|
],
|
|
"file": "video/video_controls.json"
|
|
},
|
|
{
|
|
"title": "State transition trigger",
|
|
"case_id": 82,
|
|
"steps": [
|
|
"Press 'To liked'"
|
|
],
|
|
"expected_results": [
|
|
"First - there should be animation, there are only old triggers",
|
|
"Second - there should be no animation, the old 'state_change' is rubbed with an empty list of new ones",
|
|
"Third - there should be animation, old and new are allowed by default"
|
|
],
|
|
"file": "animations/transition/transition_triggers_state_change.json"
|
|
},
|
|
{
|
|
"title": "Data transition trigger",
|
|
"case_id": 211,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"steps": [
|
|
"Press 'Change data to DST with root flag'",
|
|
"Press 'Change data to SRC'",
|
|
"Press 'Change data to DST without root flag'",
|
|
"Press 'Change data to SRC'"
|
|
],
|
|
"expected_results": [
|
|
"After pressing 'Change data to DST with root flag', new elements should appear with animation and the 'Change data to SRC' button should be shown",
|
|
"After pressing 'Change data to SRC', the elements should disappear with animation and the initial two buttons should be shown",
|
|
"After pressing 'Change data to DST without root flag', new elements should appear without animation and the 'Change data to SRC' button should be shown",
|
|
"After pressing 'Change data to SRC', the elements should disappear without animation and the initial two buttons should be shown"
|
|
],
|
|
"file": "animations/transition/transition_triggers_data_change_src.json"
|
|
},
|
|
{
|
|
"title": "Actions logging",
|
|
"case_id": 83,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Click on Test button",
|
|
"Double click Test button",
|
|
"Long click on Test button",
|
|
"Check logs"
|
|
],
|
|
"expected_results": [
|
|
"Click logged 2 times",
|
|
"Double click logged 2 times",
|
|
"Long click logged 2 times"
|
|
],
|
|
"file": "logging.json"
|
|
},
|
|
{
|
|
"title": "Lottie animations",
|
|
"case_id": 86,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"lottie"
|
|
],
|
|
"file": "animations/lottie/lottie_animations.json"
|
|
},
|
|
{
|
|
"title": "Lottie gallery",
|
|
"case_id": 87,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"lottie"
|
|
],
|
|
"file": "animations/lottie/lottie_gallery.json"
|
|
},
|
|
{
|
|
"title": "Lottie from divkit-asset",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "divkit-asset support is not expected"
|
|
},
|
|
"tags": [
|
|
"lottie"
|
|
],
|
|
"file": "animations/lottie/asset_lottie.json",
|
|
"case_id": 475
|
|
},
|
|
{
|
|
"title": "Lottie gallery with expressions",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"lottie"
|
|
],
|
|
"file": "animations/lottie/lottie_gallery_with_expressions.json",
|
|
"case_id": 466
|
|
},
|
|
{
|
|
"title": "States default state",
|
|
"case_id": 88,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"file": "states_default_state.json"
|
|
},
|
|
{
|
|
"title": "Tabs item actions",
|
|
"case_id": 89,
|
|
"file": "tabs-item-actions.json"
|
|
},
|
|
{
|
|
"title": "Image Shimmer Preview",
|
|
"case_id": 143,
|
|
"file": "image_shimmer_preview.json",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"expected_results": [
|
|
"Shimmer animation is running"
|
|
]
|
|
},
|
|
{
|
|
"title": "Custom container",
|
|
"case_id": 92,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"file": "custom-container.json"
|
|
},
|
|
{
|
|
"title": "Custom card",
|
|
"case_id": 93,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"file": "custom-card.json"
|
|
},
|
|
{
|
|
"title": "Rive animations",
|
|
"case_id": 150,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"expected_results": [
|
|
"Two-column grid with seven cards playing different rive animations"
|
|
],
|
|
"file": "animations/rive/rive_animation.json"
|
|
},
|
|
{
|
|
"title": "Rive gallery",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"expected_results": [
|
|
"Gallery with six cards playing different rive animations"
|
|
],
|
|
"file": "animations/rive/rive_gallery.json",
|
|
"case_id": 467
|
|
},
|
|
{
|
|
"title": "Rive animation (loop=pingPong)",
|
|
"case_id": 149,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"expected_results": [
|
|
"Infinite animation with changing direction"
|
|
],
|
|
"file": "animations/rive/rive_ping_pong_loop.json"
|
|
},
|
|
{
|
|
"title": "Rive animation (loop=oneShot)",
|
|
"case_id": 148,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"steps": [
|
|
"Animation plays once then stops",
|
|
"Press Restart"
|
|
],
|
|
"expected_results": [
|
|
"Animation plays once then stops"
|
|
],
|
|
"file": "animations/rive/rive_one_shot_loop.json"
|
|
},
|
|
{
|
|
"title": "Visibility transition trigger",
|
|
"case_id": 94,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"file": "animations/transition/transition_triggers_visibility_change.json",
|
|
"steps": [
|
|
"1. Click on 'Visible', then on 'Invisible'",
|
|
"2. Click on 'Visible', then on 'Gone'",
|
|
"3. Click on 'Invisible', then on 'Visible'",
|
|
"4. Click on 'Invisible', then on 'Gone'",
|
|
"5. Click on 'Gone', then on 'Visible'",
|
|
"6. Click on 'Gone', then on 'Invisible'"
|
|
],
|
|
"expected_results": [
|
|
"1, 2 - animated, 3 - instant, 4 - always visible",
|
|
"'Invisible' -> 'Gone' or 'Gone' -> 'Invisible' - not animated, last item changes position",
|
|
"'Visible' -> 'Invisible' or 'Invisible' -> 'Visible' - items animated, last item static",
|
|
"'Visible' -> 'Gone' or 'Gone' -> 'Visible' - items animated, last item changes position"
|
|
]
|
|
},
|
|
{
|
|
"title": "Complex transition triggers",
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"steps": [
|
|
"Click on 'Change data'",
|
|
"Click on 'Go back'",
|
|
"Click on 'To state two'",
|
|
"Click on 'Visible' / 'Invisible' / 'Gone'"
|
|
],
|
|
"expected_results": [
|
|
"If item 'Visible' or 'Invisible' - blue background visible, otherwise hidden"
|
|
],
|
|
"file": "animations/transition/transition_triggers_complex_src.json",
|
|
"case_id": 468
|
|
},
|
|
{
|
|
"title": "Gallery items posing",
|
|
"case_id": 95,
|
|
"automated": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivGallery"
|
|
],
|
|
"steps": [
|
|
"Scroll the items to the gallery end",
|
|
"Try to scroll again"
|
|
],
|
|
"expected_results": [
|
|
"Current item always stick to the text."
|
|
],
|
|
"file": "gallery/gallery-items-posing.json"
|
|
},
|
|
{
|
|
"title": "Common timer",
|
|
"case_id": 96,
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"expected_results": [
|
|
"The timer calls tick_actions and changes the variable with the set interval.",
|
|
"After the duration expires, the timer stops and calls end_actions."
|
|
],
|
|
"file": "timers/common-timer.json"
|
|
},
|
|
{
|
|
"title": "Common timer with typed action",
|
|
"case_id": 166,
|
|
"tags": [
|
|
"Timers",
|
|
"TypedActions"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"expected_results": [
|
|
"The timer calls tick_actions and changes the variable with the set interval.",
|
|
"After the duration expires, the timer stops and calls end_actions."
|
|
],
|
|
"file": "timers/typed-common-timer.json"
|
|
},
|
|
{
|
|
"title": "Endless timer",
|
|
"case_id": 97,
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"expected_results": [
|
|
"The timer calls tick_actions and changes the variable with the set interval.",
|
|
"The timer is endless and can be stopped only by an action."
|
|
],
|
|
"file": "timers/endless-timer.json"
|
|
},
|
|
{
|
|
"title": "Countdown timer",
|
|
"case_id": 98,
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"expected_results": [
|
|
"The timer changes the value of the variable only at the end of the work."
|
|
],
|
|
"file": "timers/countdown-timer.json"
|
|
},
|
|
{
|
|
"title": "Change bounds transition allows input focus",
|
|
"case_id": 162,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "The bug is caused by the peculiarities of animation implementation on iOS",
|
|
"web": "The bug is caused by the peculiarities of animation implementation on iOS"
|
|
},
|
|
"tags": [
|
|
"DivInput",
|
|
"Animations"
|
|
],
|
|
"expected_results": [
|
|
"Text can be entered into the input field, focus does not disappear. The check is related to the implementation features of change_bounds on iOS"
|
|
],
|
|
"file": "change_bounds_transition_input.json"
|
|
},
|
|
{
|
|
"title": "Blur in DivImage",
|
|
"case_id": 99,
|
|
"tags": [
|
|
"DivImage"
|
|
],
|
|
"steps": [
|
|
"Click on images under the text"
|
|
],
|
|
"expected_results": [
|
|
"Images are blurred according to blur radius",
|
|
"Starting blur radius is 4",
|
|
"Blur radius is changed to 0 or 8 when clicking on images"
|
|
],
|
|
"file": "div_image_blur.json"
|
|
},
|
|
{
|
|
"title": "LayoutProvider",
|
|
"case_id": 188,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"LayoutProvider"
|
|
],
|
|
"expected_results": [
|
|
"Blocks with correct size"
|
|
],
|
|
"file": "layout_provider.json"
|
|
},
|
|
{
|
|
"title": "LayoutProvider recursive",
|
|
"case_id": 189,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"LayoutProvider"
|
|
],
|
|
"expected_results": [
|
|
"Blocks with correct size",
|
|
"Warning about recursive layout, depends on platform"
|
|
],
|
|
"file": "layout_provider_recursive.json"
|
|
},
|
|
{
|
|
"title": "SizeProvider extension",
|
|
"case_id": 102,
|
|
"platforms": [
|
|
"ios",
|
|
"web"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by snapshot_test_data/div-container/size_provider.json"
|
|
},
|
|
"tags": [
|
|
"extensions",
|
|
"SizeProvider"
|
|
],
|
|
"expected_results": [
|
|
"Blocks with correct size"
|
|
],
|
|
"file": "size_provider.json"
|
|
},
|
|
{
|
|
"title": "SizeProvider extension (recursive)",
|
|
"case_id": 103,
|
|
"platforms": [
|
|
"ios",
|
|
"web"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by snapshot_test_data/div-container/size_provider_recursive.json"
|
|
},
|
|
"tags": [
|
|
"extensions",
|
|
"SizeProvider"
|
|
],
|
|
"expected_results": [
|
|
"No relayout"
|
|
],
|
|
"file": "size_provider_recursive.json"
|
|
},
|
|
{
|
|
"title": "Fixed length input mask",
|
|
"case_id": 104,
|
|
"platforms": [
|
|
"android",
|
|
"web",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Enter an inappropriate character for the place",
|
|
"Enter the appropriate character",
|
|
"Switch show/hide placeholders"
|
|
],
|
|
"expected_results": [
|
|
"The symbol did not appear",
|
|
"The symbol appeared",
|
|
"Placeholders shown/hidden"
|
|
],
|
|
"file": "input/fixed_length_input_mask.json"
|
|
},
|
|
{
|
|
"title": "Fixed length phone input mask",
|
|
"case_id": 105,
|
|
"platforms": [
|
|
"android",
|
|
"web",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"file": "input/fixed_length_phone_input_mask.json"
|
|
},
|
|
{
|
|
"title": "Phone input mask",
|
|
"case_id": 146,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Enter an inappropriate character for the place",
|
|
"Enter the appropriate character",
|
|
"Enter phone number"
|
|
],
|
|
"expected_results": [
|
|
"The symbol did not appear",
|
|
"The symbol appeared",
|
|
"Mask for phone number is correct"
|
|
],
|
|
"file": "input/phone_input_mask.json"
|
|
},
|
|
{
|
|
"title": "Regex input filter",
|
|
"case_id": 158,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"expected_results": [
|
|
"Entered text must be filtered by a regular expression from corresponding field",
|
|
"The first input cannot be empty after entering at least 1 character",
|
|
"The second input can be emptied"
|
|
],
|
|
"file": "input/regex_input_filter.json"
|
|
},
|
|
{
|
|
"title": "Regex input validator",
|
|
"case_id": 147,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"file": "input/regex_input_validator.json"
|
|
},
|
|
{
|
|
"title": "Expression input filter",
|
|
"case_id": 159,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"expected_results": [
|
|
"Entering in the input field should be filtered depending on whether the filter condition is enabled or disabled"
|
|
],
|
|
"file": "input/expression_input_filter.json"
|
|
},
|
|
{
|
|
"title": "Expression input validator",
|
|
"case_id": 142,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"file": "input/expression_input_validator.json"
|
|
},
|
|
{
|
|
"title": "Currency input mask",
|
|
"case_id": 106,
|
|
"platforms": [
|
|
"android",
|
|
"web",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"file": "input/currency_input_mask.json"
|
|
},
|
|
{
|
|
"title": "Video with controls",
|
|
"case_id": 107,
|
|
"tags": [
|
|
"DivVideo"
|
|
],
|
|
"file": "video/video_with_controls.json"
|
|
},
|
|
{
|
|
"title": "Video with controls and typed actions",
|
|
"case_id": 180,
|
|
"tags": [
|
|
"DivVideo",
|
|
"TypedActions"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"file": "video/typed_video_with_controls.json"
|
|
},
|
|
{
|
|
"title": "Video volume control",
|
|
"case_id": 108,
|
|
"tags": [
|
|
"DivVideo"
|
|
],
|
|
"file": "video/video_volume_control.json"
|
|
},
|
|
{
|
|
"title": "Disappearing actions with DivVideo",
|
|
"case_id": 109,
|
|
"tags": [
|
|
"DivVideo",
|
|
"Disappear action",
|
|
"visibility_actions",
|
|
"DivGallery"
|
|
],
|
|
"file": "video/video_in_gallery.json"
|
|
},
|
|
{
|
|
"title": "Video with empty source",
|
|
"tags": [
|
|
"DivVideo",
|
|
"DivGallery"
|
|
],
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"steps": [
|
|
"Scroll through the gallery"
|
|
],
|
|
"expected_results": [
|
|
"Videos play using URL from player_settings_payload when video_sources is empty"
|
|
],
|
|
"file": "video/video_gallery_payload.json",
|
|
"case_id": 499
|
|
},
|
|
{
|
|
"title": "Video stream",
|
|
"case_id": 152,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Stream video from apple.com are not supported in the test environment"
|
|
},
|
|
"tags": [
|
|
"DivVideo"
|
|
],
|
|
"file": "video/video_stream.json"
|
|
},
|
|
{
|
|
"title": "Video fullscreen",
|
|
"case_id": 110,
|
|
"tags": [
|
|
"DivVideo",
|
|
"Disappear action",
|
|
"visibility_actions",
|
|
"DivGallery"
|
|
],
|
|
"file": "video/fullscreen_video_in_recycler.json"
|
|
},
|
|
{
|
|
"title": "Video in pager",
|
|
"case_id": 111,
|
|
"tags": [
|
|
"DivVideo",
|
|
"DivPager"
|
|
],
|
|
"file": "video/video_in_pager.json"
|
|
},
|
|
{
|
|
"title": "Video callbacks",
|
|
"case_id": 112,
|
|
"tags": [
|
|
"DivVideo"
|
|
],
|
|
"file": "video/video_callbacks.json"
|
|
},
|
|
{
|
|
"title": "Video scale",
|
|
"case_id": 113,
|
|
"tags": [
|
|
"DivVideo"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"file": "video/video_scale.json"
|
|
},
|
|
{
|
|
"title": "Video aspect",
|
|
"case_id": 114,
|
|
"tags": [
|
|
"DivVideo"
|
|
],
|
|
"file": "video/video_aspect.json"
|
|
},
|
|
{
|
|
"title": "Tooltips with typed actions",
|
|
"case_id": 179,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Tooltips",
|
|
"visibility_actions",
|
|
"TypedActions"
|
|
],
|
|
"steps": [
|
|
"Click on buttons"
|
|
],
|
|
"expected_results": [
|
|
"Tooltips are shown",
|
|
"Tooltips are hidden when tapping into an empty area",
|
|
"The tooltip is closed by tapping on the cross button and disappears when the Disappear Action is called"
|
|
],
|
|
"file": "typed-tooltips.json"
|
|
},
|
|
{
|
|
"title": "Tooltips",
|
|
"case_id": 117,
|
|
"tags": [
|
|
"Tooltips",
|
|
"visibility_actions"
|
|
],
|
|
"steps": [
|
|
"Click on buttons"
|
|
],
|
|
"expected_results": [
|
|
"Tooltips are shown",
|
|
"Tooltips are hidden when tapping into an empty area",
|
|
"The tooltip is closed by tapping on the cross button and disappears when the Disappear Action is called"
|
|
],
|
|
"file": "tooltips/tooltips.json"
|
|
},
|
|
{
|
|
"title": "Tooltips with tap outside properties",
|
|
"case_id": 305,
|
|
"platforms": [
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Tooltips"
|
|
],
|
|
"steps": [
|
|
"Tap on first button",
|
|
"Try to tap outside of tooltip",
|
|
"Close tooltip by cross button",
|
|
"Tap on second button",
|
|
"Tap outside of tooltip",
|
|
"Tap on third button",
|
|
"Tap on other buttons"
|
|
],
|
|
"expected_results": [
|
|
"First tooltip is shown",
|
|
"First tooltip isn't closed by tapping outside of the tooltip",
|
|
"First tooltip is closed",
|
|
"Second tooltip is shown",
|
|
"Label text changed to `Outside actions called: true`, label text color is green",
|
|
"Third tooltip is shown",
|
|
"First and second buttons are clickable during showing of third non modal tooltip"
|
|
],
|
|
"file": "tooltips-with-tap-outside-properties.json"
|
|
},
|
|
{
|
|
"title": "Tooltip on different positions",
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"Tooltips"
|
|
],
|
|
"steps": [
|
|
"Click on buttons to set different positions of the tooltip",
|
|
"After that, click the \"tooltip with close button\" button to display the tooltip"
|
|
],
|
|
"expected_results": [
|
|
"The tooltip is always fully visible on the screen",
|
|
"Tooltips are hidden when tapping into an empty area",
|
|
"The tooltip is closed by tapping on the cross button and disappears when the Disappear Action is called"
|
|
],
|
|
"file": "tooltips/tooltip-positions.json",
|
|
"case_id": 469
|
|
},
|
|
{
|
|
"title": "Non-modal tooltips transparency",
|
|
"platforms": [
|
|
"ios",
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Tooltips"
|
|
],
|
|
"steps": [
|
|
"Click on tooltip's red container",
|
|
"Swipe on tooltip's red container"
|
|
],
|
|
"expected_results": [
|
|
"Click on tooltip's red container should click button that it covers and close tooltip",
|
|
"Swipe on tooltip's red container should swipe gallery below and close tooltip"
|
|
],
|
|
"file": "tooltips/tooltip-touch-transparency.json",
|
|
"case_id": 472
|
|
},
|
|
{
|
|
"title": "Tooltips with animations",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Tooltips",
|
|
"Animations"
|
|
],
|
|
"steps": [
|
|
"Click on buttons"
|
|
],
|
|
"expected_results": [
|
|
"Tooltips are shown with custom animations",
|
|
"Tooltips are hidden with custom animations"
|
|
],
|
|
"file": "tooltips/tooltips-animations.json",
|
|
"case_id": 470
|
|
},
|
|
{
|
|
"title": "Switching state in the tooltip",
|
|
"case_id": 207,
|
|
"platforms": [
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Tooltips"
|
|
],
|
|
"steps": [
|
|
"Tap 'Show tooltip' button",
|
|
"Tap 'Set root state 2' button on the tooltip",
|
|
"Tap 'Set tooltip state 2' button on the tooltip"
|
|
],
|
|
"expected_results": [
|
|
"Tooltip is shown",
|
|
"State in the root view is changed to 'State 2'",
|
|
"State in the tooltip is changed to 'State 2'"
|
|
],
|
|
"file": "tooltips/tooltip-with-states.json"
|
|
},
|
|
{
|
|
"title": "Tooltip with substrate",
|
|
"platforms": [
|
|
"web",
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"Tooltips"
|
|
],
|
|
"steps": [
|
|
"Tap 'Show tooltip' button",
|
|
"Close tooltip"
|
|
],
|
|
"expected_results": [
|
|
"Tooltip is shown, substrate showed with the animation",
|
|
"Booth the tooltip and the'substrate are hidden"
|
|
],
|
|
"file": "tooltips/tooltip-with-substrate.json",
|
|
"case_id": 486
|
|
},
|
|
{
|
|
"title": "Tooltip with bring to top view",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"Tooltips"
|
|
],
|
|
"steps": [
|
|
"Tap 'Show tooltip' button",
|
|
"Close tooltip"
|
|
],
|
|
"expected_results": [
|
|
"Tooltip is shown, substrate showed with the animation",
|
|
"Bring to top view above the substrate",
|
|
"Booth the tooltip and the substrate are hidden"
|
|
],
|
|
"file": "tooltips/tooltip-with-bring-to-top-view.json",
|
|
"case_id": 491
|
|
},
|
|
{
|
|
"title": "Persistent values storage",
|
|
"case_id": 145,
|
|
"platforms": [
|
|
"ios",
|
|
"web",
|
|
"android"
|
|
],
|
|
"steps": [
|
|
"Press 'Store value for 10 seconds'",
|
|
"Reopen this json in less than 10 seconds",
|
|
"Reopen this json in after 10 seconds"
|
|
],
|
|
"expected_results": [
|
|
"In the first open there should be the text 'Nothing stored'",
|
|
"In the second open there should be the text 'Stored'",
|
|
"In the last open there should be again the text 'Nothing stored'"
|
|
],
|
|
"file": "stored_value.json"
|
|
},
|
|
{
|
|
"title": "Persistent values lifetime",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Press 'Set stored value for 10 seconds'",
|
|
"Reopen this case in less than 10 seconds",
|
|
"Reopen this case after 10 seconds",
|
|
"Press 'Set stored value forever'",
|
|
"Reopen this case in less than 10 seconds",
|
|
"Reopen this case after 30 seconds"
|
|
],
|
|
"expected_results": [
|
|
"When the case is opened for the first time, there should be the text '<undefined>'.",
|
|
"When the case is opened for the second time, there should be the text 'short-term value'.",
|
|
"When the case is opened for the third time, there should be the text '<undefined>'.",
|
|
"When the case is opened for the fourth time, there should be the text 'long-term value'.",
|
|
"When the case is opened for any subsequent time, there should be the text 'long-term value'."
|
|
],
|
|
"file": "stored_value_lifetime.json",
|
|
"case_id": 483
|
|
},
|
|
{
|
|
"title": "Persistent values storage with typed actions",
|
|
"case_id": 206,
|
|
"tags": [
|
|
"TypedActions"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Press 'Store string value for 10 seconds'",
|
|
"Press 'Store color value for 10 seconds'",
|
|
"Press 'Store url value for 10 seconds'",
|
|
"Press 'Store array value for 10 seconds'",
|
|
"Press 'Store dict value for 10 seconds'",
|
|
"Reopen this json in less than 10 seconds",
|
|
"Reopen this json in after 10 seconds"
|
|
],
|
|
"expected_results": [
|
|
"In the first open there should be the text 'No String value, https://no-stored-url.com, [], {}'.",
|
|
"In the second open there should new values should appear 'Stored typed, https://yandex.ru, [1, 2, 3], {\"key\": \"value\"}' on a green background.",
|
|
"In the last open there should be again as it was at first open."
|
|
],
|
|
"file": "typed_stored_value.json"
|
|
},
|
|
{
|
|
"title": "Patch container",
|
|
"case_id": 118,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-container/patch_container.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-container/patch_container.json"
|
|
},
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"2 original items should be replaced with the new ones, which background is red"
|
|
],
|
|
"file": "patch/container.json"
|
|
},
|
|
{
|
|
"title": "Patch container typed action",
|
|
"case_id": 191,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"patch",
|
|
"TypedActions"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"2 original items should be replaced with the new ones, which background is red",
|
|
"In case of success, 'Success!' text appears",
|
|
"In case of fail 'Fail!' text appears"
|
|
],
|
|
"file": "patch/typed-container.json"
|
|
},
|
|
{
|
|
"title": "Patch container internal items",
|
|
"case_id": 119,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-container/patch_container.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-container/patch_container.json"
|
|
},
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"2 original items should be replaced with the new ones, which background is red"
|
|
],
|
|
"file": "patch/inside_container.json"
|
|
},
|
|
{
|
|
"title": "Patch gallery with typed action",
|
|
"case_id": 192,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"TypedActions",
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"2 original items should be replaced with the new ones, which background is red"
|
|
],
|
|
"file": "patch/typed-gallery.json"
|
|
},
|
|
{
|
|
"title": "Patch gallery",
|
|
"case_id": 120,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"2 original items should be replaced with the new ones, which background is red"
|
|
],
|
|
"file": "patch/gallery.json"
|
|
},
|
|
{
|
|
"title": "Patch gallery internal items",
|
|
"case_id": 121,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"Second original item should be replaced with two vertical ones, which background is red. Third item should be an empty space. That look like 2-nd and 3-rd elements became red and has slightly more free space after 3-rd"
|
|
],
|
|
"file": "patch/inside_gallery.json"
|
|
},
|
|
{
|
|
"title": "Patch grid",
|
|
"case_id": 122,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-grid/patch_grid.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-grid/patch_grid.json"
|
|
},
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"2 original items should be replaced with the new ones, which background is red"
|
|
],
|
|
"file": "patch/grid.json"
|
|
},
|
|
{
|
|
"title": "Patch grid internal items",
|
|
"case_id": 123,
|
|
"automated": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"Second original item should be replaced with two vertical ones, which background is red. Third item should be an empty space"
|
|
],
|
|
"file": "patch/inside_grid.json"
|
|
},
|
|
{
|
|
"title": "Patch pager",
|
|
"case_id": 124,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-grid/patch_inside_grid.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-grid/patch_inside_grid.json"
|
|
},
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"2 original items should be replaced with the new ones, which background is red"
|
|
],
|
|
"file": "patch/pager.json"
|
|
},
|
|
{
|
|
"title": "Patch pager internal items",
|
|
"case_id": 125,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second"
|
|
],
|
|
"expected_results": [
|
|
"Second original item should be replaced with two vertical ones, which background is red. Third item should be an empty space"
|
|
],
|
|
"file": "patch/inside_pager.json"
|
|
},
|
|
{
|
|
"title": "Patch state partial",
|
|
"case_id": 126,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-state/patch_state_partial.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-state/patch_state_partial.json"
|
|
},
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second",
|
|
"toggle state"
|
|
],
|
|
"expected_results": [
|
|
"First state should be replaced",
|
|
"Second state should persist without changes"
|
|
],
|
|
"file": "patch/state_partial.json"
|
|
},
|
|
{
|
|
"title": "Patch state transactional broken",
|
|
"case_id": 127,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-state/patch_state_transactional_broken.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-state/patch_state_transactional_broken.json"
|
|
},
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second",
|
|
"toggle state"
|
|
],
|
|
"expected_results": [
|
|
"Both states should have no changes"
|
|
],
|
|
"file": "patch/state_transactional_broken.json"
|
|
},
|
|
{
|
|
"title": "Patch state transactional success",
|
|
"case_id": 128,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "test is replaced by interactive_snapshot_test_data/div-state/patch_state_transactional_success.json",
|
|
"web": "test is replaced by interactive_snapshot_test_data/div-state/patch_state_transactional_success.json"
|
|
},
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second",
|
|
"toggle state"
|
|
],
|
|
"expected_results": [
|
|
"First state should be replaced",
|
|
"Second state should persist without changes"
|
|
],
|
|
"file": "patch/state_transactional_success.json"
|
|
},
|
|
{
|
|
"title": "Patch tabs partial",
|
|
"case_id": 129,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second",
|
|
"Check all tabs"
|
|
],
|
|
"expected_results": [
|
|
"Second tab should be replaced, other should have no changes"
|
|
],
|
|
"file": "patch/tabs_partial.json"
|
|
},
|
|
{
|
|
"title": "Patch tabs transactional broken",
|
|
"case_id": 130,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second",
|
|
"Check all tabs"
|
|
],
|
|
"expected_results": [
|
|
"All tabs should have no changes"
|
|
],
|
|
"file": "patch/tabs_transactional_broken.json"
|
|
},
|
|
{
|
|
"title": "Patch tabs transactional success",
|
|
"case_id": 132,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second",
|
|
"Check all tabs"
|
|
],
|
|
"expected_results": [
|
|
"First tab should be replaced, other should have no changes"
|
|
],
|
|
"file": "patch/tabs_transactional_success.json"
|
|
},
|
|
{
|
|
"title": "Track visibility action from patch",
|
|
"case_id": 160,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 10 seconds",
|
|
"Should be lorem ipsum text"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"web",
|
|
"ios"
|
|
],
|
|
"priority": "blocker",
|
|
"expected_results": [
|
|
"Lorem ipsum text, showed with animation"
|
|
],
|
|
"file": "patch/patchable_card_with_visibility_actions.json"
|
|
},
|
|
{
|
|
"title": "Patch root div",
|
|
"case_id": 176,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"steps": [
|
|
"Wait 10 seconds",
|
|
"Check items"
|
|
],
|
|
"expected_results": [
|
|
"Second element is gallery"
|
|
],
|
|
"file": "patch/root.json"
|
|
},
|
|
{
|
|
"title": "Patch on_applied_actions",
|
|
"case_id": 167,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"platforms": [
|
|
"web",
|
|
"android",
|
|
"ios"
|
|
],
|
|
"steps": [
|
|
"Wait 10 seconds",
|
|
"Check items"
|
|
],
|
|
"expected_results": [
|
|
"2 elements should become red",
|
|
"Patch status text should become success"
|
|
],
|
|
"file": "patch/actions_applied.json"
|
|
},
|
|
{
|
|
"title": "Patch on_failed_actions",
|
|
"case_id": 168,
|
|
"tags": [
|
|
"patch"
|
|
],
|
|
"platforms": [
|
|
"web",
|
|
"ios",
|
|
"android"
|
|
],
|
|
"steps": [
|
|
"Wait 10 seconds",
|
|
"Check items"
|
|
],
|
|
"expected_results": [
|
|
"Patch status text should become fail",
|
|
"No other elements hould be changed"
|
|
],
|
|
"file": "patch/actions_failed.json"
|
|
},
|
|
{
|
|
"title": "State with variable binding",
|
|
"case_id": 133,
|
|
"tags": [
|
|
"DivState"
|
|
],
|
|
"platforms": [
|
|
"web",
|
|
"ios",
|
|
"android"
|
|
],
|
|
"steps": [
|
|
"Press buttons with div-actions."
|
|
],
|
|
"expected_results": [
|
|
"DivState change state."
|
|
],
|
|
"file": "state_binding.json"
|
|
},
|
|
{
|
|
"title": "Multiple state switching with different root state",
|
|
"case_id": 175,
|
|
"tags": [
|
|
"DivState"
|
|
],
|
|
"steps": [
|
|
"Press button \"STATE 0 (INITIAL)\"",
|
|
"Press button \"STATE 1\""
|
|
],
|
|
"expected_results": [
|
|
"Button with text \"STATE 0 (FINAL)\". No crashes at state change."
|
|
],
|
|
"file": "state/multiple_root_state_switching.json"
|
|
},
|
|
{
|
|
"title": "Input inside pager",
|
|
"case_id": 134,
|
|
"tags": [
|
|
"DivPager",
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Click on a number."
|
|
],
|
|
"expected_results": [
|
|
"A keyboard appears and the number can be edited."
|
|
],
|
|
"file": "input_inside_pager.json"
|
|
},
|
|
{
|
|
"title": "Input keyboard types",
|
|
"case_id": 157,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"expected_results": [
|
|
"The keyboard type when clicking on an input field should differ depending on the select"
|
|
],
|
|
"file": "input/input_keyboard_types.json"
|
|
},
|
|
{
|
|
"title": "Slider vertical scroll interruption",
|
|
"case_id": 135,
|
|
"automated": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Slider"
|
|
],
|
|
"steps": [
|
|
"Drag slider view up."
|
|
],
|
|
"expected_results": [
|
|
"The entire gallery should be moved upwards."
|
|
],
|
|
"file": "slider_scroll_vertical.json"
|
|
},
|
|
{
|
|
"title": "Slider horizontal scroll interruption",
|
|
"case_id": 136,
|
|
"automated": [
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"Slider"
|
|
],
|
|
"steps": [
|
|
"Drag slider to the left."
|
|
],
|
|
"expected_results": [
|
|
"Slider should change value, but its view shouldn't be moved."
|
|
],
|
|
"file": "slider_scroll_horizontal.json"
|
|
},
|
|
{
|
|
"title": "Gesture (extension)",
|
|
"case_id": 137,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"extensions"
|
|
],
|
|
"steps": [
|
|
"Swipe up",
|
|
"Swipe down",
|
|
"Swipe left",
|
|
"Swipe right"
|
|
],
|
|
"expected_results": [
|
|
"Rect turns yellow",
|
|
"Rect turns green",
|
|
"Rect turns blue",
|
|
"Rect turns purple"
|
|
],
|
|
"file": "gesture.json"
|
|
},
|
|
{
|
|
"title": "Rebind container",
|
|
"case_id": 205,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Complex Rebind is supported only on Android",
|
|
"ios": "Complex Rebind is supported only on Android"
|
|
},
|
|
"tags": [
|
|
"Rebind"
|
|
],
|
|
"steps": [
|
|
"Tap to \"Do\"/\"UnDo\" several times to check that forward and backward rebind works correctly",
|
|
"Tap to \"Next\", repeat step 1. Needed to check complex layout rebinds",
|
|
"Repeat steps 1 and 2 until you return to the first layout after pressing \"Next\""
|
|
],
|
|
"expected_results": [
|
|
"No crashes, asserts or parsing errors",
|
|
"Test behaves the same with and without \"Complex Rebind\" flag activated"
|
|
],
|
|
"file": "rebind/container/un_added.json"
|
|
},
|
|
{
|
|
"title": "Rebind grid",
|
|
"case_id": 204,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Complex Rebind is supported only on Android",
|
|
"ios": "Complex Rebind is supported only on Android"
|
|
},
|
|
"tags": [
|
|
"Rebind"
|
|
],
|
|
"steps": [
|
|
"Tap to \"Do\"/\"UnDo\" several times to check that forward and backward rebind works correctly",
|
|
"Tap to \"Next\", repeat step 1. Needed to check complex layout rebinds",
|
|
"Repeat steps 1 and 2 until you return to the first layout after pressing \"Next\""
|
|
],
|
|
"expected_results": [
|
|
"No crashes, asserts or parsing errors",
|
|
"Test behaves the same with and without \"Complex Rebind\" flag activated"
|
|
],
|
|
"file": "rebind/grid/un_added.json"
|
|
},
|
|
{
|
|
"title": "Rebind gallery",
|
|
"case_id": 203,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Complex Rebind is supported only on Android",
|
|
"ios": "Complex Rebind is supported only on Android"
|
|
},
|
|
"tags": [
|
|
"Rebind"
|
|
],
|
|
"steps": [
|
|
"Tap to \"Do\"/\"UnDo\" several times to check that forward and backward rebind works correctly",
|
|
"Tap to \"Next\", repeat step 1. Needed to check complex layout rebinds",
|
|
"Repeat steps 1 and 2 until you return to the first layout after pressing \"Next\""
|
|
],
|
|
"expected_results": [
|
|
"No crashes, asserts or parsing errors",
|
|
"Test behaves the same with and without \"Complex Rebind\" flag activated"
|
|
],
|
|
"file": "rebind/gallery/un_added.json"
|
|
},
|
|
{
|
|
"title": "Rebind pager",
|
|
"case_id": 202,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Complex Rebind is supported only on Android",
|
|
"ios": "Complex Rebind is supported only on Android"
|
|
},
|
|
"tags": [
|
|
"Rebind"
|
|
],
|
|
"steps": [
|
|
"Tap to \"Do\"/\"UnDo\" several times to check that forward and backward rebind works correctly",
|
|
"Tap to \"Next\", repeat step 1. Needed to check complex layout rebinds",
|
|
"Repeat steps 1 and 2 until you return to the first layout after pressing \"Next\""
|
|
],
|
|
"expected_results": [
|
|
"No crashes, asserts or parsing errors",
|
|
"Test behaves the same with and without \"Complex Rebind\" flag activated"
|
|
],
|
|
"file": "rebind/pager/un_added.json"
|
|
},
|
|
{
|
|
"title": "Rebind tabs",
|
|
"case_id": 201,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Complex Rebind is supported only on Android",
|
|
"ios": "Complex Rebind is supported only on Android"
|
|
},
|
|
"tags": [
|
|
"Rebind"
|
|
],
|
|
"steps": [
|
|
"Run the test with the \"Complex Rebind\" flag disabled, then repeat with the flag enabled",
|
|
"Tap \"Do\" and then \"UnDo\"",
|
|
"Tap \"Next\", then tap \"Do\" and \"UnDo\"",
|
|
"Tap \"Next\" again, then tap \"Do\" and \"UnDo\""
|
|
],
|
|
"expected_results": [
|
|
"After tapping \"Do\", the layout should change",
|
|
"After tapping \"UnDo\", the layout should return to the previous state",
|
|
"After tapping \"Next\", the entire layout should be replaced",
|
|
"After each full layout replacement, \"Do\" and \"UnDo\" should still correctly apply and revert small patch rebinds",
|
|
"No crashes, asserts, or parsing errors should occur",
|
|
"The behavior should be identical with the \"Complex Rebind\" flag disabled and enabled"
|
|
],
|
|
"file": "rebind/tabs/un_added.json"
|
|
},
|
|
{
|
|
"title": "Container with item_builder",
|
|
"case_id": 138,
|
|
"platforms": [
|
|
"ios",
|
|
"web",
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"actions",
|
|
"DivContainer"
|
|
],
|
|
"steps": [
|
|
"Tap to cards. Their description is displayed in the first card."
|
|
],
|
|
"file": "container/item_builder.json"
|
|
},
|
|
{
|
|
"title": "Container with item_builder and id for each item",
|
|
"case_id": 193,
|
|
"platforms": [
|
|
"ios",
|
|
"web",
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"actions",
|
|
"DivContainer"
|
|
],
|
|
"steps": [
|
|
"Tap on button. Second input should be focused"
|
|
],
|
|
"file": "container/Item_builder_with_id_override.json"
|
|
},
|
|
{
|
|
"title": "Input password",
|
|
"case_id": 139,
|
|
"platforms": [
|
|
"web",
|
|
"ios",
|
|
"android"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Type something inside password",
|
|
"Tap the \"toggle\" button"
|
|
],
|
|
"expected_results": [
|
|
"Password inside input shown as dots, text field below input is showing original text",
|
|
"Text inside password input became readable"
|
|
],
|
|
"file": "input/input_password.json"
|
|
},
|
|
{
|
|
"title": "Disabled input",
|
|
"case_id": 141,
|
|
"platforms": [
|
|
"ios",
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Tap the \"Disable\" button and try to edit text",
|
|
"Tap the \"Enable\" button and try to edit text"
|
|
],
|
|
"expected_results": [
|
|
"Text is not editable",
|
|
"Text became editable"
|
|
],
|
|
"file": "input/input_is_enabled.json"
|
|
},
|
|
{
|
|
"title": "Vector scale",
|
|
"case_id": 187,
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"Vector"
|
|
],
|
|
"steps": [
|
|
"Move slider"
|
|
],
|
|
"expected_results": [
|
|
"The left image should be rasterized and blurry.",
|
|
"The right image should scale perfectly."
|
|
],
|
|
"file": "svg_scale.json"
|
|
},
|
|
{
|
|
"title": "Rebind custom",
|
|
"case_id": 200,
|
|
"platforms": [
|
|
"android"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Complex Rebind is supported only on Android",
|
|
"ios": "Complex Rebind is supported only on Android"
|
|
},
|
|
"tags": [
|
|
"Rebind"
|
|
],
|
|
"steps": [
|
|
"Tap to \"Next\" several times to check that forward and backward rebind works correctly"
|
|
],
|
|
"expected_results": [
|
|
"No crashes, asserts or parsing errors",
|
|
"Test behaves the same with and without \"Complex Rebind\" flag activated"
|
|
],
|
|
"file": "rebind/custom/custom-container.json"
|
|
},
|
|
{
|
|
"title": "Pager page transformation",
|
|
"case_id": 156,
|
|
"tags": [
|
|
"DivPager",
|
|
"scroll"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"steps": [
|
|
"Swipe a bit both of pagers"
|
|
],
|
|
"expected_results": [
|
|
"Content is changes page by page",
|
|
"On swipe on the top pager pages change alpha and size",
|
|
"On swipe on the bottom pager pages change alpha, size and stack in the middle of screen"
|
|
],
|
|
"file": "pager/pagers-with-page-transformation.json"
|
|
},
|
|
{
|
|
"title": "Pager accessibility scroll",
|
|
"case_id": 195,
|
|
"tags": [
|
|
"DivPager",
|
|
"Accessibility"
|
|
],
|
|
"steps": [
|
|
"Enter accessibility mode",
|
|
"Horizontal swipe to left",
|
|
"Horizontal swipe to right"
|
|
],
|
|
"expected_results": [
|
|
"Content is changes page by page",
|
|
"Page change is logged"
|
|
],
|
|
"file": "pager/pager.json"
|
|
},
|
|
{
|
|
"title": "Indicator with pager with invisible items",
|
|
"case_id": 185,
|
|
"tags": [
|
|
"DivPager",
|
|
"DivIndicator"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Swipe pages in both directions"
|
|
],
|
|
"expected_results": [
|
|
"There are 6 circles in indicator",
|
|
"Only pages with even numbers are shown",
|
|
"Active indicator item follows swipe direction"
|
|
],
|
|
"file": "indicator/indicator_with_invisible_items.json"
|
|
},
|
|
{
|
|
"title": "Indicator with pager with invisible items and infinite scroll",
|
|
"case_id": 186,
|
|
"tags": [
|
|
"DivPager",
|
|
"DivIndicator"
|
|
],
|
|
"platforms": [
|
|
"android",
|
|
"web"
|
|
],
|
|
"steps": [
|
|
"Swipe forward from 0 to 10 element",
|
|
"Swipe forward",
|
|
"Swipe backward"
|
|
],
|
|
"expected_results": [
|
|
"There are 6 circles in indicator",
|
|
"Only pages with even numbers are shown",
|
|
"Page with number 0 appears after the page with number 10",
|
|
"Page with number 10 appears before the page with number 0",
|
|
"Active indicator item follows swipe direction"
|
|
],
|
|
"file": "indicator/indicator_with_invisible_items_and_infinite_scroll.json"
|
|
},
|
|
{
|
|
"title": "Shine (extension)",
|
|
"case_id": 181,
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"extensions"
|
|
],
|
|
"steps": [
|
|
"Wait 1 second for shine animation to start",
|
|
"Wait 1 second for 1 shine animation cycle to pass",
|
|
"Wait 1 second for a second shine animation cycle to start",
|
|
"Wait several seconds for 3 animation cycles to pass"
|
|
],
|
|
"expected_results": [
|
|
"Shine animation cycle started and cycle counter equals 1",
|
|
"Shine animation cycle ended and cycle counter still equals 1",
|
|
"Second animation cycle started and counter equals 2",
|
|
"There is no 4th animation cycle and the counter equals 3"
|
|
],
|
|
"file": "shine.json"
|
|
},
|
|
{
|
|
"title": "Input focus",
|
|
"case_id": 199,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Tap in the middle of the input text",
|
|
"Tap the focus button"
|
|
],
|
|
"expected_results": [
|
|
"Cursor is at the place you tapped",
|
|
"Cursor at the last position"
|
|
],
|
|
"file": "input/input_focus.json"
|
|
},
|
|
{
|
|
"title": "Indicator auto-binding (no pager ids)",
|
|
"case_id": 200,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivIndicator"
|
|
],
|
|
"steps": [
|
|
"Scroll pagers"
|
|
],
|
|
"expected_results": [
|
|
"Each indicator is bound to the nearest pager"
|
|
],
|
|
"file": "indicator_auto_binding_no_ids.json"
|
|
},
|
|
{
|
|
"title": "Indicator auto-binding (same pager ids)",
|
|
"case_id": 201,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivIndicator"
|
|
],
|
|
"steps": [
|
|
"Scroll pagers"
|
|
],
|
|
"expected_results": [
|
|
"Each indicator is bound to the nearest pager"
|
|
],
|
|
"file": "indicator_auto_binding_same_ids.json"
|
|
},
|
|
{
|
|
"title": "Input with capture on focus actions",
|
|
"case_id": 220,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput",
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"Tap the input",
|
|
"Tap the first button",
|
|
"Tap the input",
|
|
"Tap the second button",
|
|
"Tap the input",
|
|
"Tap the third button"
|
|
],
|
|
"expected_results": [
|
|
"Only last tap doesn't affect input focus"
|
|
],
|
|
"file": "input/input_capture_focus.json"
|
|
},
|
|
{
|
|
"title": "Input with set_cursor_position actions",
|
|
"platforms": [
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivInput",
|
|
"DivAction"
|
|
],
|
|
"steps": [
|
|
"Tap on all buttons one by one"
|
|
],
|
|
"expected_results": [
|
|
"Input is focused",
|
|
"When pressing the 'to start' button, the cursor was moved to the beginning of the input",
|
|
"When pressing the 'to end' button, the cursor was moved to the end of the input",
|
|
"When pressing the 'to 7' button, the cursor was moved after the 7th character of the input.",
|
|
"When pressing the 'to 7-12' the selection range with the second word is entered (if the text has not been changed)"
|
|
],
|
|
"file": "input/input_set_cursor_position.json"
|
|
},
|
|
{
|
|
"title": "Submit action test",
|
|
"case_id": 221,
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivAction",
|
|
"TypedActions"
|
|
],
|
|
"steps": [
|
|
"Tap the 'Submit Form' button",
|
|
"Enter a different URL in the API endpoint field",
|
|
"Tap the 'Submit Form' button"
|
|
],
|
|
"expected_results": [
|
|
"Form data is submitted to the specified endpoint",
|
|
"Status changes to 'Form submitted successfully' on successful submission",
|
|
"Status changes to 'Form submission failed' on failed submission"
|
|
],
|
|
"file": "submit_action.json"
|
|
},
|
|
{
|
|
"title": "Input Properties Extension",
|
|
"case_id": 222,
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Input Properties Extension is supported only on iOS",
|
|
"android": "Input Properties Extension is supported only on iOS"
|
|
},
|
|
"tags": [
|
|
"extensions",
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Toggle the switches to enable or disable spell checking, automatic return key and autocorrection",
|
|
"Close and reopen the keyboard by tapping outside the text input and then selecting it again"
|
|
],
|
|
"expected_results": [
|
|
"Spell checking: Misspelled words should appear highlighted if enabled",
|
|
"Return key: The return key is only enabled when text is not empty, if the option is on"
|
|
],
|
|
"file": "input/input_properties_extension.json"
|
|
},
|
|
{
|
|
"title": "Input field in gallery that triggers action",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"DivGallery",
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Enter a character in the input field",
|
|
"Erase the entered character"
|
|
],
|
|
"expected_results": [
|
|
"After entering a symbol in the gallery, an additional element appears at the bottom",
|
|
"After entering a character, the focus remains in the input field",
|
|
"After deleting the symbol, the additional gallery element is hidden"
|
|
],
|
|
"file": "input_in_gallery.json",
|
|
"case_id": 477
|
|
},
|
|
{
|
|
"title": "Color scheme dependent color animator",
|
|
"platforms": [
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"Animators"
|
|
],
|
|
"steps": [
|
|
"Tap the \"Start animator\" button",
|
|
"Change the color scheme on your device",
|
|
"Tap the \"Start animator\" button again"
|
|
],
|
|
"expected_results": [
|
|
"Initially, you see a light-filled square labeled \"light\" or a dark-filled square labeled \"dark\" depending on the device's current color scheme",
|
|
"After the animator starts, depending on the color scheme, the dark fill color will animate to black or the light fill color will animate to white",
|
|
"After switching the screen theme, the dark square becomes light and the light square becomes dark",
|
|
"The animation triggered by the button should change to one that matches the current color scheme"
|
|
],
|
|
"file": "animations/animators/color_scheme_dependent_color_animator.json",
|
|
"case_id": 485
|
|
},
|
|
{
|
|
"title": "Gif animations",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"unsupported_platforms": {
|
|
"web": "Behavior differs, there is another case for web."
|
|
},
|
|
"tags": [
|
|
"Animations",
|
|
"DivImage",
|
|
"DivGifImage"
|
|
],
|
|
"steps": [
|
|
"Wait for animation frame to change"
|
|
],
|
|
"expected_results": [
|
|
"Animation is playing only in case 3 (in div-gif-image). In other cases image is static."
|
|
],
|
|
"file": "animations/gif_animation.json",
|
|
"case_id": 494
|
|
},
|
|
{
|
|
"title": "Gif animations",
|
|
"platforms": [
|
|
"web"
|
|
],
|
|
"unsupported_platforms": {
|
|
"android": "Behavior differs, there is another case for android and ios.",
|
|
"ios": "Behavior differs, there is another case for android and ios."
|
|
},
|
|
"tags": [
|
|
"Animations",
|
|
"DivImage",
|
|
"DivGifImage"
|
|
],
|
|
"steps": [
|
|
"Wait for animation frame to change"
|
|
],
|
|
"expected_results": [
|
|
"Animation is playing in every case.",
|
|
"Warning about specific behavior on web is shown."
|
|
],
|
|
"file": "animations/gif_animation.json",
|
|
"case_id": 495
|
|
},
|
|
{
|
|
"title": "Input cursor position",
|
|
"platforms": [
|
|
"android",
|
|
"ios"
|
|
],
|
|
"tags": [
|
|
"DivInput"
|
|
],
|
|
"steps": [
|
|
"Click 'Change text' button.",
|
|
"Tap on input and set cursor to the beginning or the middle of the text.",
|
|
"Click 'Change text' button.",
|
|
"Enter some text in the beginning or the middle of the text.",
|
|
"Click 'Change text' button."
|
|
],
|
|
"expected_results": [
|
|
"After the first change text in input is changed to 'new_text', input is not active, cursor is not visible.",
|
|
"After the second change text in input is 'new_text', input is active, cursor retains its position.",
|
|
"After the third change text in input is changed to 'new_text', input is active, cursor is in the end of the text."
|
|
],
|
|
"file": "input/input_cursor_position.json",
|
|
"case_id": 496
|
|
},
|
|
{
|
|
"title": "Visibility action with local variable in url",
|
|
"platforms": [
|
|
"android",
|
|
"ios",
|
|
"web"
|
|
],
|
|
"tags": [
|
|
"visibility_actions",
|
|
"variables"
|
|
],
|
|
"steps": [
|
|
"Wait for visibility action to trigger (less than 1 second)"
|
|
],
|
|
"expected_results": [
|
|
"Text changes from 'Waiting for visibility action...' to 'Triggered from local variable!'"
|
|
],
|
|
"file": "visibility_actions/visibility_action_with_local_variable_in_url.json",
|
|
"case_id": 500
|
|
}
|
|
]
|
|
}
|