-
Notifications
You must be signed in to change notification settings - Fork 121
[UI Test] - Add validation on new product screen and new add product tests #8407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| import UITestsFoundation | ||
| import XCTest | ||
|
|
||
| class ProductFlow { | ||
|
|
||
| static func addAndVerifyNewProduct(productType: String) throws { | ||
| let product = try GetMocks.readNewProductData() | ||
|
|
||
| try TabNavComponent().goToProductsScreen() | ||
| .tapAddProduct() | ||
| .selectProductType(productType: productType) | ||
| .verifyProductTypeScreenLoaded(productType: productType) | ||
| .addProductTitle(productTitle: product.name) | ||
| .publishProduct() | ||
| .verifyNewProductScreenLoaded(productName: product.name) | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,14 +3,6 @@ import XCTest | |
|
|
||
| final class ProductsTests: XCTestCase { | ||
|
|
||
| let productTypes = [ | ||
| "physical": "Simple physical product", | ||
| "virtual": "Simple virtual product", | ||
| "variable": "Variable product", | ||
| "grouped": "Grouped product", | ||
| "external": "External product" | ||
| ] | ||
|
|
||
| override func setUpWithError() throws { | ||
| continueAfterFailure = false | ||
|
|
||
|
|
@@ -33,13 +25,14 @@ final class ProductsTests: XCTestCase { | |
| } | ||
|
|
||
| func test_add_simple_physical_product() throws { | ||
| let product = try GetMocks.readNewProductData() | ||
| try ProductFlow.addAndVerifyNewProduct(productType: "physical") | ||
| } | ||
|
|
||
| try TabNavComponent().goToProductsScreen() | ||
| .tapAddProduct() | ||
| .selectProductType(productType: productTypes["physical"]!) | ||
| .addProductTitle(productTitle: product.name) | ||
| .publishProduct() | ||
| .verifyNewProductScreenLoaded(productName: product.name) | ||
| func test_add_simple_virtual_product() throws { | ||
| try ProductFlow.addAndVerifyNewProduct(productType: "virtual") | ||
| } | ||
|
|
||
| func test_add_variable_product() throws { | ||
| try ProductFlow.addAndVerifyNewProduct(productType: "variable") | ||
| } | ||
|
Comment on lines
+31
to
37
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ➕ for extracting the repetitive part to a flow. Nice 👍 |
||
| } | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just thinking aloud: the buttons for product type selection have no identifiers (as of now), so identifiers can't be used (which would be justified, since this non-asserting function can potentially be used in tests for localizations). So, we can go for exact text values (as you did before). Is there a reason for less strict locator (only part of a string / case-insensitive) that you're using now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah i actually tried to add identifiers for the cells but it looks like it will take more effort than i anticipated so i dropped that for now.
so the reason is that i wanted to be able to reuse it in the test like this:
the test wants the product type in both, using simple physical product as an example, in select product the text for that is
Simple physical productand in add product screen it'sPhysical, the common denominator in both is the wordphysical(case-insensitive) so i decided to go with that. it fits the needs of the test case while still keeping it reusable and clear.