This morning I realize that \"test service request and validate the response based on a baseline/reference\" in your message is not the only thing I need ^^'
I would like to launch my mobile app automatically on the device with Testcomplete and, in parallel, capture the mobile traffic with proxy. During all the automatic tasks with TestComplete on the device, the proxy (like fiddler or mitmproxy), could change some parameters and testcomplete will wait until \"something\" happened (good or bad ^^)
Exemple :
0. Prepare response body or baseline/reference before the test begin.
1. Testcomplete lauch the app
1.1 With the opening of the app, proxy capture the mobile traffic and compare with a reference all the request/response which the device emit. If it's ok the test continue. In some case, I need to modify some parameters from the response to see how the app react (before the launching or during the app is active).
2. Automatics steps on the device with Testcomplete
2.1 The proxy capture and analyze traffic and if it's not coherent, stop the test.
Hope all is clear
(english is not ma mother tongue)
Thanks for your help
Thomas
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"208","kudosSumWeight":0,"postTime":"2021-03-04T03:06:41.875-08:00","lastPublishTime":"2021-03-04T03:06:41.875-08:00","metrics":{"__typename":"MessageMetrics","views":2035},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:TestComplete_forum/community:nwkab66374board:testcomplete-questions/message:213855/message:213906","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":true,"endCursor":"MjUuMnwyLjF8aXwxfDM5OjB8aW50LDIxNDAxMiwyMTQwMTI","hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8aXwxfDM5OjB8aW50LDIxNDAxMiwyMTQwMTI","node":{"__ref":"ForumReplyMessage:message:214012"}}]},"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"editFrozen":false,"body@stringLength":"1300","rawBody":"Dear Vinniew,
This morning I realize that \"test service request and validate the response based on a baseline/reference\" in your message is not the only thing I need ^^'
I would like to launch my mobile app automatically on the device with Testcomplete and, in parallel, capture the mobile traffic with proxy. During all the automatic tasks with TestComplete on the device, the proxy (like fiddler or mitmproxy), could change some parameters and testcomplete will wait until \"something\" happened (good or bad ^^)
Exemple :
0. Prepare response body or baseline/reference before the test begin.
1. Testcomplete lauch the app
1.1 With the opening of the app, proxy capture the mobile traffic and compare with a reference all the request/response which the device emit. If it's ok the test continue. In some case, I need to modify some parameters from the response to see how the app react (before the launching or during the app is active).
2. Automatics steps on the device with Testcomplete
2.1 The proxy capture and analyze traffic and if it's not coherent, stop the test.
Hope all is clear
(english is not ma mother tongue)
Thanks for your help
Thomas
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:213906_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"ModerationData:moderation_data:214012":{"__typename":"ModerationData","id":"moderation_data:214012","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"ForumReplyMessage:message:214012":{"__typename":"ForumReplyMessage","author":{"__ref":"User:user:21756"},"id":"message:214012","revisionNum":1,"uid":214012,"depth":3,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:testcomplete-questions"},"parent":{"__ref":"ForumReplyMessage:message:213906"},"conversation":{"__ref":"Conversation:conversation:213855"},"subject":"Re: Mobile testing and capturing traffic","moderationData":{"__ref":"ModerationData:moderation_data:214012"},"body":"Hi Thomas,
\n\n
I am not an expert with Fiddler, but it seems to me that it is possible to set it up (using Fiddler Script or AutoResponder) to modify request/response data on the fly.
\nAnother idea is to consider ServiceV -- one more component of ReadyAPI -- which definitely seems to be able to do what you are talking about.
\nhttps://support.smartbear.com/readyapi/docs/virtualization/routing/conditional.html
\n","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"208","kudosSumWeight":2,"repliesCount":0,"postTime":"2021-03-05T10:10:01.991-08:00","lastPublishTime":"2021-03-05T10:10:01.991-08:00","metrics":{"__typename":"MessageMetrics","views":1991},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:TestComplete_forum/community:nwkab66374board:testcomplete-questions/message:213855/message:214012","customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"readOnly":false,"editFrozen":false,"body@stringLength":"610","rawBody":"
Hi Thomas,
\n\n
I am not an expert with Fiddler, but it seems to me that it is possible to set it up (using Fiddler Script or AutoResponder) to modify request/response data on the fly.
\nAnother idea is to consider ServiceV -- one more component of ReadyAPI -- which definitely seems to be able to do what you are talking about.
\nhttps://support.smartbear.com/readyapi/docs/virtualization/routing/conditional.html
\n","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:214012_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"ModerationData:moderation_data:213857":{"__typename":"ModerationData","id":"moderation_data:213857","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"ForumReplyMessage:message:213857":{"__typename":"ForumReplyMessage","author":{"__ref":"User:user:96110"},"id":"message:213857","revisionNum":1,"uid":213857,"depth":2,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:testcomplete-questions"},"parent":{"__ref":"ForumReplyMessage:message:213856"},"conversation":{"__ref":"Conversation:conversation:213855"},"subject":"Re: Mobile testing and capturing traffic","moderationData":{"__ref":"ModerationData:moderation_data:213857"},"body":"
Thank you very much for your great responsiveness! I will watch this and I will keep you posted
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"97","kudosSumWeight":0,"repliesCount":0,"postTime":"2021-03-03T07:17:10.191-08:00","lastPublishTime":"2021-03-03T07:17:10.191-08:00","metrics":{"__typename":"MessageMetrics","views":2061},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:TestComplete_forum/community:nwkab66374board:testcomplete-questions/message:213855/message:213857","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"readOnly":false,"editFrozen":false,"body@stringLength":"102","rawBody":"Thank you very much for your great responsiveness! I will watch this and I will keep you posted
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:213857_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"QueryVariables:MessageSolutions":{"__typename":"QueryVariables","id":"MessageSolutions","value":{"first":10,"constraints":{"topicId":{"eq":"message:213855"},"solution":{"eq":true}},"sorts":{"postTime":{"direction":"ASC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":false,"useBody":true,"useKudosCount":false,"useTimeToRead":false,"useMedia":true,"useRepliesCount":false,"useSearchSnippet":false,"useAcceptedSolutionButton":true,"useSolvedBadge":false,"useAttachments":true,"useTags":false,"useUserHoverCard":false,"useNodeHoverCard":false,"usePreviewSubjectModal":false,"useMessageStatus":false}},"CachedAsset:text:en_US-components/messages/EscalatedMessageBanner-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/EscalatedMessageBanner-1741125846000","value":{"escalationMessage":"Escalated to Salesforce by {username} on {date}","viewDetails":"View Details","modalTitle":"Case Details","escalatedBy":"Escalated by: ","escalatedOn":"Escalated on: ","caseNumber":"Case Number: ","status":"Status: ","lastUpdateDate":"Last Update: ","automaticEscalation":"automatic escalation","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1741125846000","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1741125846000","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1741125846000","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolvedBadge-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolvedBadge-1741125846000","value":{"solved":"Solved"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1741125846000","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1741125846000","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1741125846000","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1741125846000","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolutionList-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolutionList-1741125846000","value":{"emptyDescription":"No has been message solutions yet"},"localOverride":false},"CachedAsset:text:en_US-components/messages/AcceptedSolutionButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/AcceptedSolutionButton-1741125846000","value":{"accept":"Mark as Solution","accepted":"Marked as Solution","errorHeader":"Error!","errorAdd":"There was an error marking as solution.","errorRemove":"There was an error unmarking as solution.","solved":"Solved","topicAlreadySolvedErrorTitle":"Solution Already Exists","topicAlreadySolvedErrorDesc":"Refresh the browser to view the existing solution"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000","value":{"loadMore":"Show More"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1741125846000","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"Revision:revision:214012_1":{"__typename":"Revision","id":"revision:214012_1","lastEditTime":"2021-03-05T10:10:01.991-08:00"},"Revision:revision:213906_1":{"__typename":"Revision","id":"revision:213906_1","lastEditTime":"2021-03-04T03:06:41.875-08:00"},"Revision:revision:213857_1":{"__typename":"Revision","id":"revision:213857_1","lastEditTime":"2021-03-03T07:17:10.191-08:00"},"Revision:revision:213856_1":{"__typename":"Revision","id":"revision:213856_1","lastEditTime":"2021-03-03T07:13:17.976-08:00"},"ModerationData:moderation_data:213935":{"__typename":"ModerationData","id":"moderation_data:213935","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AcceptedSolutionMessage:message:213935":{"__typename":"AcceptedSolutionMessage","author":{"__ref":"User:user:87613"},"id":"message:213935","revisionNum":2,"uid":213935,"depth":3,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:testcomplete-questions"},"parent":{"__ref":"ForumReplyMessage:message:213906"},"conversation":{"__ref":"Conversation:conversation:213855"},"subject":"Re: Mobile testing and capturing traffic","moderationData":{"__ref":"ModerationData:moderation_data:213935"},"body":"Hi Thomas,
\n\n
Yes its clear.
\n\n
My understanding from the OP was that you were manually doing this by picking up a device using fiddler to provide you with the response information, then comparing it manually to your baseline/reference.
\n\n
Essentially you are manually ensuring the response information and validating it against that baseline
\n\n
If the end goal is to test the service request would it not make sense to focus on this and test the api service using a dedicated tool like Soap UI/Ready API.
\n\n
The key element here is that were reducing the manual process you are currently using, In RAPI we can parametrize API tests, Data Drive API tests and validate responses. We can also build up tests quite easily and look at automation in our API tests
\n\n
You can still test the UI component of your APP in TC and automate functional UI tests in TC.
\n\n
And then if you want you could run those API tests in a tool like TC were it makes sense in your TC flow.
\n\n
See https://support.smartbear.com/testcomplete/docs/working-with/integration/ready-api/index.html
","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})@stringLength":"223","postTime":"2021-03-04T08:32:38.518-08:00","lastPublishTime":"2021-03-04T08:33:57.909-08:00","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"attachments":{"__typename":"AttachmentConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"solution":true,"metrics":{"__typename":"MessageMetrics","views":2011},"placeholder":false,"originalMessageForPlaceholder":null,"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"isEscalated":null,"entityType":"FORUM_REPLY","eventPath":"category:TestComplete_forum/community:nwkab66374board:testcomplete-questions/message:213855/message:213935","customFields":[],"readOnly":false,"editFrozen":false,"body@stringLength":"1416","rawBody":"Hi Thomas,
\n\n
Yes its clear.
\n\n
My understanding from the OP was that you were manually doing this by picking up a device using fiddler to provide you with the response information, then comparing it manually to your baseline/reference.
\n\n
Essentially you are manually ensuring the response information and validating it against that baseline
\n\n
If the end goal is to test the service request would it not make sense to focus on this and test the api service using a dedicated tool like Soap UI/Ready API.
\n\n
The key element here is that were reducing the manual process you are currently using, In RAPI we can parametrize API tests, Data Drive API tests and validate responses. We can also build up tests quite easily and look at automation in our API tests
\n\n
You can still test the UI component of your APP in TC and automate functional UI tests in TC.
\n\n
And then if you want you could run those API tests in a tool like TC were it makes sense in your TC flow.
\n\n
See https://support.smartbear.com/testcomplete/docs/working-with/integration/ready-api/index.html
","kudosSumWeight":2,"repliesCount":0,"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:213935_2"},"latestVersion":null,"visibilityScope":"PUBLIC","messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1741125846000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"Revision:revision:213935_2":{"__typename":"Revision","id":"revision:213935_2","lastEditTime":"2021-03-04T08:33:57.909-08:00"},"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagView/TagViewChip-1741125846000","value":{"tagLabelName":"Tag name {tagName}"},"localOverride":false}}}},"page":"/forums/ForumMessagePage/ForumMessagePage","query":{"autoScroll":"true","topicRepliesSort":"postTimeDesc","boardId":"testcomplete-questions","messageSubject":"mobile-testing-and-capturing-traffic","messageId":"213855"},"buildId":"q_bLpq2mflH0BeZigxpj6","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"smartbear","openTelemetryServiceVersion":"25.2.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/seo/QAPageSchema/QAPageSchema.tsx","./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/messages/TopicWithThreadedReplyListWidget/TopicWithThreadedReplyListWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/messages/RelatedContentWidget/RelatedContentWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/messages/MessageView/MessageViewStandard/MessageViewStandard.tsx","./components/messages/ThreadedReplyList/ThreadedReplyList.tsx","../shared/client/components/common/List/UnstyledList/UnstyledList.tsx","./components/messages/MessageView/MessageView.tsx","../shared/client/components/common/Pager/PagerLoadMore/PagerLoadMore.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx","../shared/client/components/common/List/UnwrappedList/UnwrappedList.tsx","./components/tags/TagView/TagView.tsx","./components/tags/TagView/TagViewChip/TagViewChip.tsx"],"appGip":true,"scriptLoader":[]}/discussions/testcomplete-questions/mobile-testing-and-capturing-traffic/213855?topicRepliesSort=postTimeDesc