package com.mavlushechka.a1qa; import aquality.selenium.browser.AqualityServices; import com.mavlushechka.a1qa.models.Attachment; import com.mavlushechka.a1qa.models.Comment; import com.mavlushechka.a1qa.models.Post; import com.mavlushechka.a1qa.models.User; import com.mavlushechka.a1qa.pages.FeedPage; import com.mavlushechka.a1qa.pages.HomePage; import com.mavlushechka.a1qa.pages.ProfilePage; import com.mavlushechka.a1qa.pages.SignInPage; import com.mavlushechka.a1qa.utils.JsonParser; import com.mavlushechka.a1qa.utils.LoggerUtils; import com.mavlushechka.a1qa.utils.StringUtils; import com.mavlushechka.a1qa.utils.VkApiUtils; import org.testng.Assert; import org.testng.annotations.Test; import java.io.IOException; public class TestCase1 extends BaseTest { @Test public void test1() throws IOException { HomePage homePage = new HomePage(); Assert.assertTrue(homePage.isOpened(), "This is not the " + homePage.getName() + " page."); LoggerUtils.step("[UI] Authorize."); homePage.performAuthorization(JsonParser.parseData("testData", "vkontakte.account.login")); SignInPage signInPage = new SignInPage(); Assert.assertTrue(signInPage.isOpened(), "This is not the " + signInPage.getName() + " page."); signInPage.performAuthorization(JsonParser.parseData("testData", "vkontakte.account.password")); FeedPage feedPage = new FeedPage(); Assert.assertTrue(feedPage.isOpened(), "This is not the " + feedPage.getName() + " page."); AqualityServices.getBrowser().waitForPageToLoad(); LoggerUtils.step("[UI] Go to \"My profile\"."); feedPage.clickMyProfileButton(); ProfilePage profilePage = new ProfilePage(); Assert.assertTrue(profilePage.isOpened(), "This is not the " + profilePage.getName() + " page."); User user = VkApiUtils.getCurrentUser(); int textLettersLowerBound = Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.lettersLowerBound")); int textLettersUpperBound = Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.lettersUpperBound")); int textLength = Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.length")); String postRandomText = StringUtils.generateRandomText(textLettersLowerBound, textLettersUpperBound, textLength); LoggerUtils.step("[API] Create post on the wall with randomly generated text using API-request and save id of the post from the API-response."); Post post = new Post(VkApiUtils.createPost(postRandomText), user, postRandomText, null); LoggerUtils.step("[UI] Check that post with the sent text from the correct user appeared on the wall without refreshing the page."); Assert.assertTrue(profilePage.containsPost(post), "This is not the correct post."); Attachment picture = new Attachment(com.mavlushechka.a1qa.constants.Attachment.PHOTO, user.getId(), Integer.parseInt(JsonParser.parseData("testData", "vkontakte.photoFromAlbum.id"))); LoggerUtils.step("[API] Edit the added post using API-request - change text and add(upload) a picture."); Post editedPost = new Post(post.id(), user, post.message() + "[edited]", picture); VkApiUtils.editPost(post, editedPost); profilePage.waitForPostUpdate(editedPost); LoggerUtils.step("[UI] Check that text was updated and the picture was uploaded(make sure that pictures are the same) without refreshing the page."); Assert.assertTrue(profilePage.containsPost(editedPost), "This is not the correct post."); String commentRandomText = StringUtils.generateRandomText(textLettersLowerBound, textLettersUpperBound, textLength); LoggerUtils.step("[API] Add a comment to the post with the randomly generated text using API-request."); Comment comment = new Comment(VkApiUtils.createComment(editedPost.id(), commentRandomText), user, editedPost, commentRandomText); LoggerUtils.step("[UI] Check that comment from the correct user was added to the post without refreshing the page."); Assert.assertTrue(profilePage.containsComment(comment), "This is not the correct comment."); LoggerUtils.step("[UI] Like the post using UI."); profilePage.clickPostLikeButton(post); LoggerUtils.step("[API] Check that the post received like from the correct user using API-request."); Assert.assertTrue(VkApiUtils.containsLike(editedPost, user), "The post did not receive like from the correct user."); LoggerUtils.step("[API] Delete the post using API-request."); VkApiUtils.deletePost(editedPost); profilePage.waitForPostDelete(editedPost); Assert.assertTrue(profilePage.notContainsPost(editedPost), "The post is not deleted."); } }