Add configuration files and analyze_log.py.
This commit is contained in:
parent
76057f7cdf
commit
35b14cd16d
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"app_name": "APhotoManager",
|
||||
"bug_id": "#116",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the \"Setting\" in the options.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"app_name": "ActivityDairy",
|
||||
"bug_id": "#118",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked an item in MainActivity.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the fabAttachPicture.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Get a picture.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Open the drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Clicked the \"Dairy\" in the drawer.",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"6": {
|
||||
"info": "Long clicked an image in an activity entry.",
|
||||
"reason": null,
|
||||
"dependency": "5"
|
||||
},
|
||||
"7": {
|
||||
"info": "Deleted an image in an activity entry.",
|
||||
"reason": null,
|
||||
"dependency": "6"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"7": "Canceled to delete the image in an activity entry."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "ActivityDairy",
|
||||
"bug_id": "#285",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Opened the drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Setting\" in the drawer.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Changed \"Location Service\" to Network or GPS in \"Setting\".",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Changed \"Update period\" to a unique character in \"Setting\".",
|
||||
"reason": "Can't input unique characters like \"$\".",
|
||||
"dependency": "2"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "AmazeFileManager",
|
||||
"bug_id": "#1232",
|
||||
"steps": {
|
||||
"1": {
|
||||
"info": "Copied a internal file / files.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Opened the left drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked the second item in the drawer.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Pasted the copied file/files.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_steps_reached": "Should copy internal files to external storage."
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "AmazeFileManager",
|
||||
"bug_id": "#1796",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Cut/copy a folder or folders in the list.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Paste the cut/copied folder or folders.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should cut/copy only one folder into itself."
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "AmazeFileManager",
|
||||
"bug_id": "#1837",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Search\" button on the tool bar.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Search a string.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": "No multiple files are searched."
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "AnkiDroid",
|
||||
"bug_id": "#4200",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Selected a decker.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Pressed \"Edit note\" button.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Make any change in text editor.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Pressed \"Save note\" button in NoteEditor.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": "\"Don't keep activities\" options in developer mode haven't been enabled or text keep the same after change."
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"app_name": "AnkiDroid",
|
||||
"bug_id": "#4451",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Gestures\" item in Preferences.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Enabled gestures.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"Reviewing\" item in Preferences.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Set \"Fullscreen mode\" mode in Fullscreen Mode.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Select any Decker.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
"2": "Disable gestures.",
|
||||
"4": "Canceled \"Fullscreen mode\" mode in Fullscreen Mode."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "AnkiDroid",
|
||||
"bug_id": "#4707",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Add\" button in the fab.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Media\" button.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"Add image\" button.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked \"Camera\" button.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "AnkiDroid",
|
||||
"bug_id": "#4977",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Get shared decks\" button in fab.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Card browser\" in the drawer.",
|
||||
"reason": "Can't open drawer.",
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "AnkiDroid",
|
||||
"bug_id": "#5638",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Add\" button in the fab.",
|
||||
"reason": "Can't open fab.",
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Input a string in the \"Front template\" TextEditor",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"app_name": "AnkiDroid",
|
||||
"bug_id": "#5756",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Add\" button in the fab.",
|
||||
"reason": "Can't open the fab.",
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Save or add a note",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Selected \"Create filtered deck\" in the menu.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Created a new filtered deck.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Switch order to \"Random\".",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"6": {
|
||||
"info": "Switch order back to \"Oldest seen first\".",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"7": {
|
||||
"info": "Go back from Options.",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"8": {
|
||||
"info": "Selected a deck.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
"4": "Canceled creating a new filtered deck."
|
||||
},
|
||||
"all_events_happened": "The Decker may be empty or the corresponding deck doesn't been selected."
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"app_name": "AnkiDroid",
|
||||
"bug_id": "#6145",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"AnkiDroid\" in Preferences.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Changed language to zh_CN.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"Advanced\" in Preferences.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Enabled the \"Experimental V2 Scheduler\".",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Selected \"Export colloction\" in menu at DeckPicker",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"6": {
|
||||
"info": "Selected \"OK\" in Export Dialog",
|
||||
"reason": null,
|
||||
"dependency": "5"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
"2": "Change language to other language (not Chinese)",
|
||||
"4": "Disable the \"Experimental V2 Scheduler\".",
|
||||
"6": "Selected \"Cancel\" in Export Dialog."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"app_name": "FireFoxLite",
|
||||
"bug_id": "#4881",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked shopping button on the left bottom.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Searched a keyword.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Entered full screen.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "FireFoxLite",
|
||||
"bug_id": "#4942",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked any site button.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Exited FireFoxLite.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Back to FireFoxLite.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked [Tab tray].",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should enable \"Don't keep activity\"."
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"app_name": "FireFoxLite",
|
||||
"bug_id": "#5058",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the menu on the right bottom.",
|
||||
"reason": null,
|
||||
"depedency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Setting\" in the menu.",
|
||||
"reason": null,
|
||||
"depedency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Changed the language.",
|
||||
"reason": null,
|
||||
"depedency": "2"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"app_name": "FrostForFacebook",
|
||||
"bug_id": "#1323",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Reopened the app.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should change device to \"Airplan mode\" and reopen the app."
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"app_name": "MaterialFBook",
|
||||
"bug_id": "#224",
|
||||
"events": {
|
||||
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happended": "Should perform any long click."
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"app_name": "Omni-Notes",
|
||||
"bug_id": "#745",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the floating action button.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Text note\" in the fab.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked the \"Clip\" button on the top options to add media.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked the \"Camera\" in the lists.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Returned a picture.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"6": {
|
||||
"info": "Back.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"7": {
|
||||
"info": "Clicked a note with picture.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"8": {
|
||||
"info": "Clicked the picture in the note.",
|
||||
"reason": null,
|
||||
"dependency": "6"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"app_name": "ScarletNote",
|
||||
"bug_id": "#114",
|
||||
"steps": {
|
||||
"1": {
|
||||
"info": "Clicked \"Create New NoteBook\" on the right bottom.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Entered a notebook.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"New note\" button on the right bottom.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Long clicked a note.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Clicked \"Locked Note\" in the note menu.",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"6": {
|
||||
"info": "Clicked the menu on the left bottom.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"7": {
|
||||
"info": "Clicked \"Locked\" in the notebook menu.",
|
||||
"reason": null,
|
||||
"dependency": "6"
|
||||
},
|
||||
"8": {
|
||||
"info": "Clicked the \"X\" on the left bottom to close the notebook.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_steps_reached": null
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "WordPress",
|
||||
"bug_id": "#10302",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Pressed \"Log in or sign up with WordPress.com\" or \"Enter your existing site address\" in the welcome page.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"Help\" button.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "WordPress",
|
||||
"bug_id": "#10363",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Selected the \"Blog Posts\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"toggle_post_list_item_layout\" Buttom in the toolbar of PostsList.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"app_name": "WordPress",
|
||||
"bug_id": "#10547",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Selected the \"Blog Posts\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Selected page \"Drafts\" in post list.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"Edit\" in the post list.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Selected \"Preview\" in options menu.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Pressed back.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should enable \"Don't keep activities\"."
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "WordPress",
|
||||
"bug_id": "#11135",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Selected the \"Reader\" page.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"reader_activity_comment_list\".",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"app_name": "WordPress",
|
||||
"bug_id": "#11992",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Selected the \"Reader\" page.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Selected back to the \"My site\" page",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Selected the \"Blog Posts\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Exited the \"Blog Posts\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Selected the \"Site Pages\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should select the \"Reader\" page and enter \"Blog post\" or \"Site pages\" twice or once respectively. "
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"app_name": "WordPress",
|
||||
"bug_id": "#6530",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Chose \"Try it\" to enable new editor.",
|
||||
"reason": "Chose \"Not now\" instead.",
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"Blog posts\" at the main.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked the floating act button to create a new post.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked the \"+\" to open media window.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Added media files to post.",
|
||||
"reason": "Can't read media files.",
|
||||
"dependency": "4"
|
||||
},
|
||||
"6": {
|
||||
"info": "Pressed the Back button.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"7": {
|
||||
"info": "Pressed the \"Delete\" button in the post list card view.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
"1": "Chose \"Not now\" to close the dialog. The crash wouldn't occur."
|
||||
},
|
||||
"all_events_happended": "Should delete the post when uploading."
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"app_name": "WordPress",
|
||||
"bug_id": "#7182",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Pressed \"LOG IN\" in the welcome page.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Log in to your site by entering your site address instead.\" in the email login page.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"NEXT\" in site address login.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Changed screen to landscape.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Clicked \"NEXT\" in username and password login with landscape mode.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should keep landscape mode when logining."
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"app_name": "AndBible",
|
||||
"bug_id": "#216",
|
||||
"steps": {
|
||||
"1": {
|
||||
"info": "Clicked \"OK\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"OK\" to download a document (bible or book).",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Select the document type to \"Book\" in \"Download Documents\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked \"OK\" in \"Download Documents\"after downloading documents.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Opened the left drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"6": {
|
||||
"info": " Clicked \"Choose Document\" Button in the drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"7": {
|
||||
"info": "Selected a document.",
|
||||
"reason": null,
|
||||
"dependency": "6"
|
||||
},
|
||||
"8": {
|
||||
"info": "Selected a general book key.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"9": {
|
||||
"info": "Clicked the \"Find\" Button in the drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"10": {
|
||||
"info": "Clicked \"CREATE\" in \"Search Index\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
"1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.",
|
||||
"2": "Clicked \"CANCEL\" to give up downloading a document (bible or book)."
|
||||
},
|
||||
"all_steps_reached": null
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"app_name": "AndBible",
|
||||
"bug_id": "#375",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"OK\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Selected a book.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"OK\" to download a document(bible or book).",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked \"OK\" in \"Download Documents\" after downloading documents.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "clicked \"New Tab\" in menu \"Tabs\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"6": {
|
||||
"info": "Set Current Document to a new book.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"7": {
|
||||
"info": "Enter \"Choose Document\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"8": {
|
||||
"info": "Selected documents to delete.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"9": {
|
||||
"info": "Deleting a document.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"10": {
|
||||
"info": "Pressed back.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"11": {
|
||||
"info": "Clicked \"Switch to tab\" in menu \"Tabs\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"12": {
|
||||
"info": "Selected a tab to open.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
|
||||
},
|
||||
"warnings": {
|
||||
"1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.",
|
||||
"3": "Clicked \"CANCEL\" to give up downloading a document(bible or book)."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
"app_name": "AndBible",
|
||||
"bug_id": "#480",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"OK\" in the \"Download a Bible from the internet\" dialog at StartupActivity.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Downloaded a book.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"OK\" in \"Download Documents\"",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Opened the left drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Clicked \"Manage Bookmark Labels\" in the drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"6": {
|
||||
"info": "Clicked \"NEW LABEL\" in \"Manage Bookmark Labels\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"7": {
|
||||
"info": "Created or edited a label.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"8": {
|
||||
"info": "Deleted a label.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"9": {
|
||||
"info": "Edited a empty label.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"app_name": "AndBible",
|
||||
"bug_id": "#697",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"OK\" in the \"Download a Bible from the internet\" dialog at StartupActivity.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Yes\" in \"Do you want to proceed to download documents?\" dialog \nor clicked \"download_do_not_ask\" in \"Do you want to proceed to download documents?\" dialog.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Downloaded a book.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Click \"OK\" in \"Download Documents\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Long pressed chapterVerse.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"6": {
|
||||
"info": "Clicked myNoteAddEdit after longPressing chapterVerse.",
|
||||
"reason": null,
|
||||
"dependency": "5"
|
||||
},
|
||||
"7": {
|
||||
"info": "Clicked \"Back\" to save note.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.",
|
||||
"2": "Clicked \"Cancel\" in \"Do you want to proceed to download documents?\" dialog."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"app_name": "AndBible",
|
||||
"bug_id": "#703",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"OK\" in the \"Download a Bible from the internet\" dialog at StartupActivity.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"Yes\" in \"Do you want to proceed to download documents?\" dialog \nor clicked \"download_do_not_ask\" in \"Do you want to proceed to download documents?\" dialog.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Downloaded a book.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Click \"OK\" in \"Download Documents\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Long pressed chapterVerse.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"6": {
|
||||
"info": "Clicked myNoteAddEdit after longPress chapterVerse.",
|
||||
"reason": null,
|
||||
"dependency": "5"
|
||||
},
|
||||
"7": {
|
||||
"info": "Clicked searchButton.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"8": {
|
||||
"info": "Clicked CREATE after click searchButton.",
|
||||
"reason": null,
|
||||
"dependency": "7"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"1": "Clicked \"Cancel\" in the \"Download a Bible from the Internet\" dialog at StartupActivity.",
|
||||
"2": "Clicked \"Cancel\" in \"Do you want to proceed to download documents?\" dialog."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"app_name": "Collect",
|
||||
"bug_id": "#3222",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the \"General Settings\" in the options.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"Form management\" in \"General Settings\".",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Disabled the \"Hide old form version\" in \"Form management\".",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Back.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Clicked the \"Fill Blank Form\" in the main page.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"3": "Enabled the \"hide old form version\" in \"Form management\"."
|
||||
},
|
||||
"all_events_happened": "Should keep the state of Event 3."
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "Commons",
|
||||
"bug_id": "#1385",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Nearby\" in the drawer.",
|
||||
"reason": "Can't open the drawer.",
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"Detail list\" in \"Nearby\".",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Changed the Nearby layout to landscape.",
|
||||
"reason": "Can't rotate the screen.",
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Changed the Nearby layout back to portrait as soon as possible.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": "Didn't rotate back the screen from landscape to portrait in time."
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"app_name": "Commons",
|
||||
"bug_id": "#1391",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Nearby\" in the drawer.",
|
||||
"reason": "Can't open the drawer.",
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Selected a place on the map and showed the bottom sheet.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"Setting\" in the drawer.",
|
||||
"reason": "Can't open the drawer.",
|
||||
"dependency": null
|
||||
},
|
||||
"4": {
|
||||
"info": "Enabled the \"Night mode\" in the setting.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Back to \"Nearby\" again.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
"2": "Cancelled a place on the map and hid the bottom sheet.",
|
||||
"4": "Disabled the \"Night mode\" in the setting."
|
||||
},
|
||||
"all_events_happened": "Should keep the state of Event 2 and enable the \"Night mode\" when enter \"Nearby\" again."
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"app_name": "Commons",
|
||||
"bug_id": "#1581",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Nearby\" in the drawer.",
|
||||
"reason": "Can't open the drawer.",
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Checked that GPS (location permission) is disabled.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Selected \"ENABLE GPS\" in the GPS requirement dialog.\nThis happens when the GPS is disabled.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Selected \"OK\" in the another GPS requirement dialog.\nThis happens when the GPS is enabled but this app isn't granted with GPS permission.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
"3": "Selected \"CANCEL\" in the GPS requirement dialog.\nThis happens when the GPS is disabled.",
|
||||
"4": "Selected \"CANCEL\" in the another GPS requirement dialog.\nThis happens when the GPS is enabled but this app isn't granted with GPS permission."
|
||||
},
|
||||
"all_events_happened": "This crash requires that it's the first time to get permission from OS."
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"app_name": "Commons",
|
||||
"bug_id": "#2123",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"explore\" in the drawer.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked \"search\" in the explore.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked any item in search results.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "Commons",
|
||||
"bug_id": "#3244",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"Nearby\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"Detail list\" in \"Nearby\".",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Selected a place in the nearby list.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked the \"Camera\" in nearby list item menu.",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
}
|
||||
},
|
||||
"warnings" : {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should finish taking a photo."
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "GeoHashDroid",
|
||||
"bug_id": "#73",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the \"GRATICULE\" on the bottom.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Checked the \"Globalhash!\" checkbox.",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "NextCloud",
|
||||
"bug_id": "#1918",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": " Clicked a photo in the list.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"Send/Share\" button in menu of Previewimage.",
|
||||
"reason": "Can't open the menu",
|
||||
"dependency": "1"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"app_name": "NextCloud",
|
||||
"bug_id": "#4026",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Opened app NextCloud",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Enter NextCloud again.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"app_name": "NextCloud",
|
||||
"bug_id": "#4792",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Opened the drawer on the left.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Selected the \"Auto upload\" in the drawer",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Selected \"Set up a custom folder\" in menu",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Selected \"Remote folder\" in \"Create new custom folder setup\".",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Selected the \"New folder\" in menu.",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"6": {
|
||||
"info": "Typed some chars and pressed \"Create\".",
|
||||
"reason": null,
|
||||
"dependency": "5"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"3": "Canceled the setup.",
|
||||
"4": "Canceled choosing a remote folder.",
|
||||
"6": "Canceled creating a new folder."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"app_name": "NextCloud",
|
||||
"bug_id": "#5173",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Opened the drawer on the left.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Selected the \"Auto upload\" in drawer",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Selected \"Set up a custom folder\" in menu",
|
||||
"reason": "Can't open the menu on the right top.",
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Selected \"Remote folder\" in \"Create new custom folder setup\".",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"3": "Canceled the setup."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"app_name": "OpenLauncher",
|
||||
"bug_id": "#67",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the \"Volume\" icon in the drawer",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": "Should open the \"Do not disturb\" pref in settings."
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
"app_name": "OsmEditer4Android",
|
||||
"bug_id": "#637",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked \"LOAD\" in \"Download at other location\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked the \"Gear\" to enter \"Preferences\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked \"Validator preference\" in \"Preferences\".",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Clicked a \"Re-survey entry\".",
|
||||
"reason": null,
|
||||
"dependency": "3"
|
||||
},
|
||||
"5": {
|
||||
"info": "Clicked \"DELETE\" in \"Edit re-survey entry\".",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"6": {
|
||||
"info": "Clicked a \"Check entry\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"7": {
|
||||
"info": "Clicked \"DELETE\" in \"Edit check entry\".",
|
||||
"reason": null,
|
||||
"dependency": "6"
|
||||
},
|
||||
"8": {
|
||||
"info": "Set key, value and max age respectively.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"9": {
|
||||
"info": "Clicked \"Done\" in \"Validator ruleset Default\".",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"1": "Clicked \"GO TO MAP\" in \"Download at other location\"",
|
||||
"5": "Clicked \"CANCEL\" or \"SAVE\" in \"Edit re-survey entry\".",
|
||||
"7": "Clicked \"CANCEL\" or \"SAVE\" in \"Edit check entry\"."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"app_name": "OsmEditor4Android",
|
||||
"bug_id": "#729",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the \"unlock\" floating button to unlock the map.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Clicked a position on the map.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"3": {
|
||||
"info": "Selected a item in the popup list.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
},
|
||||
"4": {
|
||||
"info": "Turned to property editor.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"5": {
|
||||
"info": "Turned to \"Presets\" page in property editor.",
|
||||
"reason": null,
|
||||
"dependency": "4"
|
||||
},
|
||||
"6": {
|
||||
"info": "Searched in preset fragment with any string.",
|
||||
"reason": null,
|
||||
"dependency": "5"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"1": "Clicked the \"unlock\" floating button twice to lock the map."
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
|
@ -0,0 +1,155 @@
|
|||
import os.path
|
||||
import re
|
||||
import sys
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def print_header(header: str):
|
||||
com_len = int((80 - len(header)) / 2)
|
||||
print("-" * com_len + header + "-" * com_len)
|
||||
|
||||
|
||||
def print_title(title: str):
|
||||
com_len = int((80 - len(title)) / 2)
|
||||
print("*" * com_len + title + "*" * com_len)
|
||||
|
||||
|
||||
def init_counts(events):
|
||||
res = dict()
|
||||
for event in events:
|
||||
res[event] = 0
|
||||
return res
|
||||
|
||||
|
||||
def file_exists(file_path):
|
||||
if not os.path.exists(file_path):
|
||||
print("file \'%s\' doesn't exists. Analysis terminated." % file_path)
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
class Analyzer:
|
||||
|
||||
def __init__(self, json_path):
|
||||
with open(json_path, "r", encoding="utf-8") as f:
|
||||
info = json.load(f)
|
||||
self.app_name = info["app_name"] # Get the name of the app
|
||||
self.bug_id = info["bug_id"] # Get the bug id of
|
||||
self.events = info["events"] # Get all events
|
||||
self.total_event = len(self.events) # Get the numbers of events
|
||||
self.event_counts = init_counts(self.events) # Init event counter
|
||||
self.warning_counts = init_counts(self.events) # Init warning counter
|
||||
self.warnings = info["warnings"] # Get all Warnings
|
||||
self.procedure = [] # Maintain a list collecting the events analyzed
|
||||
self.last_event = None # Record the last event analyzer has gone through
|
||||
self.all_events_reached = info["all_events_reached"]
|
||||
self.first_time = dict() # Record the time of first reaching event n
|
||||
self.delta = None
|
||||
|
||||
def analyze(self, log_path, time_path):
|
||||
|
||||
# Process the time file
|
||||
if not file_exists(time_path):
|
||||
return False
|
||||
with open(time_path, "r", encoding="utf-8") as f:
|
||||
start_time = datetime.strptime(f.readline().split("\n")[0], "%Y-%m-%d-%H:%M:%S")
|
||||
self.delta = datetime.strptime(f.readline().split("\n")[0], "%Y-%m-%d-%H:%M:%S") - start_time
|
||||
|
||||
# Process the log file
|
||||
if not file_exists(log_path):
|
||||
return False
|
||||
with open(log_path, "r", encoding="utf-8") as f:
|
||||
for line in f:
|
||||
if re.search("Themis", line): # Search “Themis"
|
||||
|
||||
# Get the arrival time
|
||||
info = line.split(' ')
|
||||
event_time = datetime.strptime("2021-" + info[0] + " " + info[1].split('.')[0], "%Y-%m-%d %H:%M:%S")
|
||||
|
||||
if re.search("Event ", line, re.I): # 匹配“event”字段
|
||||
event_id = line[re.search("event ", line, re.I).span()[1]] # Get event id
|
||||
self.event_counts[str(event_id)] += 1 # The corresponding event count add 1
|
||||
self.last_event = event_id # Record the last event reached scanned
|
||||
if event_id not in self.first_time:
|
||||
self.first_time[event_id] = event_time - start_time # Record the relative time
|
||||
|
||||
if re.search("Warning ", line, re.I): # 匹配“Warning”字段
|
||||
warning_id = line[re.search("Warning ", line, re.I).span()[1]]
|
||||
self.warning_counts[warning_id] += 1
|
||||
|
||||
return True
|
||||
|
||||
def show_result(self, tool_name):
|
||||
|
||||
print_title("[ %s-%s (%s) ]" % (self.app_name, self.bug_id, tool_name))
|
||||
|
||||
print_header("[ The statistics of each event ]")
|
||||
zero_count = 0 # Count up the events which are never reached
|
||||
for event in self.event_counts:
|
||||
if self.event_counts[event] == 0:
|
||||
self.first_time[event] = None
|
||||
zero_count += 1
|
||||
print(" "*10 + "[ %s ] Event %s/%d: %3d-%-3d. (%s/%s)\n" %
|
||||
(self.bug_id, event,
|
||||
self.total_event,
|
||||
self.event_counts[event],
|
||||
self.warning_counts[event],
|
||||
self.first_time[event], self.delta) +
|
||||
" "*14 + "> event info: %s" % self.events[event]["info"])
|
||||
if self.warning_counts[event] > 0:
|
||||
print(" "*14 + "> Warning info: %s" % self.warnings[event]["info"])
|
||||
|
||||
if zero_count != 0: # If there is any event that its `count` > 0
|
||||
print_header("[ Analysis of the missing events ]")
|
||||
for event in self.event_counts:
|
||||
if self.event_counts[event] == 0:
|
||||
print(" "*10 + "[ %s ] event %s\n" % (self.bug_id, event) +
|
||||
" "*14 + "> The possible reason: %s\n" % self.events[event]["reason"] +
|
||||
" "*14 + "> The previous related events: %s" % self.events[event]["dependency"])
|
||||
|
||||
if zero_count == 0: # If there is not any event that its `count` > 0
|
||||
print_header("[ All events reached but crash doesn't occur ]")
|
||||
print(" "*10 + "[ %s ] The possible reason for this: %s" % (self.bug_id, self.all_events_reached))
|
||||
|
||||
print_title("[ Analysis finished ]")
|
||||
|
||||
|
||||
def main(log_dir: str):
|
||||
|
||||
base_dir = os.path.basename(log_dir)
|
||||
first_pos, second_pos, third_pos, forth_pos = \
|
||||
re.search("instrumented-", base_dir).span(), \
|
||||
re.search("-#", base_dir).span(), \
|
||||
re.search(".apk.", base_dir).span(), \
|
||||
re.search(".result", base_dir).span()
|
||||
|
||||
app_name, bug_id, tool_name = \
|
||||
base_dir[first_pos[1]: second_pos[0]].split("-")[0],\
|
||||
base_dir[second_pos[0]+1: third_pos[0]],\
|
||||
base_dir[third_pos[1]: forth_pos[0]]
|
||||
|
||||
json_path = os.path.join("..", app_name, "configuration-" + bug_id + ".json") # Get the path of the json file
|
||||
analyzer = Analyzer(json_path) # Initialize an Analyzer
|
||||
|
||||
log_path = os.path.join(log_dir, "logcat.log")
|
||||
print("[ Analyzer ] The log path:\n > %s" % log_path)
|
||||
time_path = os.path.join(log_dir, tool_name + "_testing_time_on_emulator.txt")
|
||||
print("[ Analyzer ] The time record path:\n > %s" % time_path)
|
||||
|
||||
if analyzer.analyze(log_path, time_path): # Start analyzing log
|
||||
analyzer.show_result(tool_name)
|
||||
|
||||
|
||||
def help_info():
|
||||
print("[Usage]: python analyze_log.py log_path1[ log_path2[ ...]]")
|
||||
print("[Usage]: Please put log files and the json file at the same directory with the same filename.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) <= 1:
|
||||
help_info()
|
||||
else:
|
||||
for i in range(1, len(sys.argv)):
|
||||
main(sys.argv[i])
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"app_name": "Sunflower",
|
||||
"bug_id": "#239",
|
||||
"events": {
|
||||
"1": {
|
||||
"info": "Clicked the drawer on the left.",
|
||||
"reason": null,
|
||||
"dependency": null
|
||||
},
|
||||
"2": {
|
||||
"info": "Selected \"Plant list\".",
|
||||
"reason": null,
|
||||
"dependency": "1"
|
||||
},
|
||||
"3": {
|
||||
"info": "Clicked two items at the same time.",
|
||||
"reason": null,
|
||||
"dependency": "2"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
|
||||
},
|
||||
"all_events_happened": null
|
||||
}
|
Loading…
Reference in New Issue