How to use StoreFileAction method of com.consol.citrus.selenium.actions.StoreFileAction class

Best Citrus code snippet using com.consol.citrus.selenium.actions.StoreFileAction.StoreFileAction

copy

Full Screen

...28import com.consol.citrus.selenium.actions.OpenWindowAction;29import com.consol.citrus.selenium.actions.SetInputAction;30import com.consol.citrus.selenium.actions.StartBrowserAction;31import com.consol.citrus.selenium.actions.StopBrowserAction;32import com.consol.citrus.selenium.actions.StoreFileAction;33import com.consol.citrus.selenium.actions.SwitchWindowAction;34import com.consol.citrus.selenium.actions.WaitUntilAction;35import com.consol.citrus.selenium.endpoint.SeleniumBrowser;36import com.consol.citrus.dsl.UnitTestSupport;37import org.mockito.Mockito;38import org.openqa.selenium.By;39import org.testng.Assert;40import org.testng.annotations.Test;41/​**42 * @author Christoph Deppisch43 * @since 2.744 */​45public class SeleniumTestDesignerTest extends UnitTestSupport {46 private SeleniumBrowser seleniumBrowser = Mockito.mock(SeleniumBrowser.class);47 @Test48 public void testSeleniumBuilder() {49 MockTestDesigner builder = new MockTestDesigner(context) {50 @Override51 public void configure() {52 selenium().start(seleniumBrowser);53 selenium().navigate("http:/​/​localhost:9090");54 selenium().find().element(By.id("target"));55 selenium().find().element("class-name", "${cssClass}")56 .tagName("button")57 .enabled(false)58 .displayed(false)59 .text("Click Me!")60 .style("color", "red")61 .attribute("type", "submit");62 selenium().click().element(By.linkText("Click Me!"));63 selenium().hover().element(By.linkText("Hover Me!"));64 selenium().setInput("Citrus").element(By.name("username"));65 selenium().checkInput(false).element(By.xpath("/​/​input[@type='checkbox']"));66 selenium().javascript("alert('Hello!')")67 .errors("This went wrong!");68 selenium().alert().text("Hello!").accept();69 selenium().clearCache();70 selenium().store("classpath:download/​file.txt");71 selenium().getStored("file.txt");72 selenium().open().window("my_window");73 selenium().focus().window("my_window");74 selenium().close().window("my_window");75 selenium().waitUntil().hidden().element(By.name("hiddenButton"));76 selenium().stop();77 }78 };79 builder.configure();80 TestCase test = builder.getTestCase();81 int actionIndex = 0;82 Assert.assertEquals(test.getActionCount(), 18);83 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), StartBrowserAction.class);84 StartBrowserAction startBrowserAction = (StartBrowserAction) test.getActions().get(actionIndex++);85 Assert.assertEquals(startBrowserAction.getName(), "selenium:start");86 Assert.assertNotNull(startBrowserAction.getBrowser());87 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), NavigateAction.class);88 NavigateAction navigateAction = (NavigateAction) test.getActions().get(actionIndex++);89 Assert.assertEquals(navigateAction.getName(), "selenium:navigate");90 Assert.assertEquals(navigateAction.getPage(), "http:/​/​localhost:9090");91 Assert.assertNull(navigateAction.getBrowser());92 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), FindElementAction.class);93 FindElementAction findElementAction = (FindElementAction) test.getActions().get(actionIndex++);94 Assert.assertEquals(findElementAction.getName(), "selenium:find");95 Assert.assertEquals(findElementAction.getBy(), By.id("target"));96 Assert.assertNull(findElementAction.getBrowser());97 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), FindElementAction.class);98 findElementAction = (FindElementAction) test.getActions().get(actionIndex++);99 Assert.assertEquals(findElementAction.getName(), "selenium:find");100 Assert.assertEquals(findElementAction.getProperty(), "class-name");101 Assert.assertEquals(findElementAction.getPropertyValue(), "${cssClass}");102 Assert.assertEquals(findElementAction.getTagName(), "button");103 Assert.assertEquals(findElementAction.getText(), "Click Me!");104 Assert.assertFalse(findElementAction.isEnabled());105 Assert.assertFalse(findElementAction.isDisplayed());106 Assert.assertEquals(findElementAction.getStyles().size(), 1L);107 Assert.assertEquals(findElementAction.getStyles().get("color"), "red");108 Assert.assertEquals(findElementAction.getAttributes().size(), 1L);109 Assert.assertEquals(findElementAction.getAttributes().get("type"), "submit");110 Assert.assertNull(findElementAction.getBrowser());111 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), ClickAction.class);112 ClickAction clickAction = (ClickAction) test.getActions().get(actionIndex++);113 Assert.assertEquals(clickAction.getName(), "selenium:click");114 Assert.assertEquals(clickAction.getBy(), By.linkText("Click Me!"));115 Assert.assertNull(findElementAction.getBrowser());116 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), HoverAction.class);117 HoverAction hoverAction = (HoverAction) test.getActions().get(actionIndex++);118 Assert.assertEquals(hoverAction.getName(), "selenium:hover");119 Assert.assertEquals(hoverAction.getBy(), By.linkText("Hover Me!"));120 Assert.assertNull(findElementAction.getBrowser());121 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), SetInputAction.class);122 SetInputAction setInputAction = (SetInputAction) test.getActions().get(actionIndex++);123 Assert.assertEquals(setInputAction.getName(), "selenium:set-input");124 Assert.assertEquals(setInputAction.getBy(), By.name("username"));125 Assert.assertEquals(setInputAction.getValue(), "Citrus");126 Assert.assertNull(findElementAction.getBrowser());127 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), CheckInputAction.class);128 CheckInputAction checkInputAction = (CheckInputAction) test.getActions().get(actionIndex++);129 Assert.assertEquals(checkInputAction.getName(), "selenium:check-input");130 Assert.assertEquals(checkInputAction.getBy(), By.xpath("/​/​input[@type='checkbox']"));131 Assert.assertFalse(checkInputAction.isChecked());132 Assert.assertNull(findElementAction.getBrowser());133 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), JavaScriptAction.class);134 JavaScriptAction javaScriptAction = (JavaScriptAction) test.getActions().get(actionIndex++);135 Assert.assertEquals(javaScriptAction.getName(), "selenium:javascript");136 Assert.assertEquals(javaScriptAction.getScript(), "alert('Hello!')");137 Assert.assertEquals(javaScriptAction.getExpectedErrors().size(), 1L);138 Assert.assertEquals(javaScriptAction.getExpectedErrors().get(0), "This went wrong!");139 Assert.assertNull(findElementAction.getBrowser());140 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), AlertAction.class);141 AlertAction alertAction = (AlertAction) test.getActions().get(actionIndex++);142 Assert.assertEquals(alertAction.getName(), "selenium:alert");143 Assert.assertEquals(alertAction.getText(), "Hello!");144 Assert.assertNull(findElementAction.getBrowser());145 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), ClearBrowserCacheAction.class);146 ClearBrowserCacheAction clearBrowserCacheAction = (ClearBrowserCacheAction) test.getActions().get(actionIndex++);147 Assert.assertEquals(clearBrowserCacheAction.getName(), "selenium:clear-cache");148 Assert.assertNull(findElementAction.getBrowser());149 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), StoreFileAction.class);150 StoreFileAction storeFileAction = (StoreFileAction) test.getActions().get(actionIndex++);151 Assert.assertEquals(storeFileAction.getName(), "selenium:store-file");152 Assert.assertEquals(storeFileAction.getFilePath(), "classpath:download/​file.txt");153 Assert.assertNull(findElementAction.getBrowser());154 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), GetStoredFileAction.class);155 GetStoredFileAction getStoredFileAction = (GetStoredFileAction) test.getActions().get(actionIndex++);156 Assert.assertEquals(getStoredFileAction.getName(), "selenium:get-stored-file");157 Assert.assertEquals(getStoredFileAction.getFileName(), "file.txt");158 Assert.assertNull(findElementAction.getBrowser());159 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), OpenWindowAction.class);160 OpenWindowAction openWindowAction = (OpenWindowAction) test.getActions().get(actionIndex++);161 Assert.assertEquals(openWindowAction.getName(), "selenium:open-window");162 Assert.assertEquals(openWindowAction.getWindowName(), "my_window");163 Assert.assertNull(findElementAction.getBrowser());164 Assert.assertEquals(test.getActions().get(actionIndex).getClass(), SwitchWindowAction.class);...

Full Screen

Full Screen
copy

Full Screen

...19/​**20 * @author Tamer Erdogan, Christoph Deppisch21 * @since 2.722 */​23public class StoreFileAction extends AbstractSeleniumAction {24 /​** File path */​25 private String filePath;26 /​**27 * Default constructor.28 */​29 public StoreFileAction() {30 super("store-file");31 }32 @Override33 protected void execute(SeleniumBrowser browser, TestContext context) {34 browser.storeFile(context.replaceDynamicContentInString(filePath));35 }36 /​**37 * Gets the filePath.38 *39 * @return40 */​41 public String getFilePath() {42 return filePath;43 }...

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.annotations.CitrusTest;2import com.consol.citrus.dsl.testng.TestNGCitrusTestRunner;3import com.consol.citrus.selenium.actions.StoreFileAction;4import org.openqa.selenium.By;5import org.testng.annotations.Test;6public class StoreFileActionJavaITest extends TestNGCitrusTestRunner {7 public void storeFileActionJavaITest() {8 selenium().start();9 selenium().click(By.linkText("About"));

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1import com.consol.citrus.annotations.CitrusTest;2import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;3import org.testng.annotations.Test;4public class 3 extends TestNGCitrusTestDesigner {5 public void 3() {6 }7}8import com.consol.citrus.annotations.CitrusTest;9import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;10import org.testng.annotations.Test;11public class 4 extends TestNGCitrusTestDesigner {12 public void 4() {13 }14}15import com.consol.citrus.annotations.CitrusTest;16import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;17import org.testng.annotations.Test;18public class 5 extends TestNGCitrusTestDesigner {19 public void 5() {20 selenium().switchToWindow("windowName");21 }22}23import com.consol.citrus.annotations.CitrusTest;24import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;25import org.testng.annotations.Test;26public class 6 extends TestNGCitrusTestDesigner {27 public void 6() {28 selenium().switchToFrame("frameName");29 }30}31import com.consol.citrus.annotations.CitrusTest;32import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;33import org.testng.annotations.Test;34public class 7 extends TestNGCitrusTestDesigner {

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.dsl.testng;2import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;3import org.springframework.core.io.ClassPathResource;4import org.testng.annotations.Test;5import java.io.File;6public class StoreFileActionJavaITest extends TestNGCitrusTestDesigner {7 public void storeFileActionJavaITest() {8 variable("fileName", "test.html");9 variable("filePath", "src/​test/​resources/​test.html");10 selenium()11 .navigate("${url}")12 .storeFile("${fileName}");13 echo("Stored file: ${fileName}");14 java()15 .execute(new ClassPathResource("com/​consol/​citrus/​dsl/​java/​StoreFileActionJavaITest.java"))16 .variable("fileName", "test.html")17 .variable("filePath", "src/​test/​resources/​test.html");18 }19}20package com.consol.citrus.dsl.testng;21import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;22import org.springframework.core.io.ClassPathResource;23import org.testng.annotations.Test;24import java.io.File;25public class StoreFileActionJavaITest extends TestNGCitrusTestDesigner {26 public void storeFileActionJavaITest() {27 variable("fileName", "test.html");28 variable("filePath", "src/​test/​resources/​test.html");29 selenium()30 .navigate("${url}")31 .storeFile("${fileName}");32 echo("Stored file: ${fileName}");33 java()34 .execute(new ClassPathResource("com/​consol/​citrus/​dsl/​java/​StoreFileActionJavaITest.java"))35 .variable("fileName", "test.html")36 .variable("filePath", "src/​test/​resources/​test.html");37 }38}39package com.consol.citrus.dsl.testng;40import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;41import org

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.selenium.actions;2import com.consol.citrus.selenium.endpoint.SeleniumBrowser;3import org.openqa.selenium.WebElement;4public class StoreFileAction extends AbstractSeleniumAction{5 public StoreFileAction(Builder builder){6 super("store-file", builder);7 }8 protected void execute(SeleniumBrowser browser) {9 WebElement element = findElement(browser);10 String value = element.getAttribute("value");11 if(value == null){12 value = element.getAttribute("href");13 }14 getVariableSupport().setVariable(getVariable(), value);15 }16 public static class Builder extends AbstractSeleniumAction.Builder<StoreFileAction, Builder> {17 public StoreFileAction build() {18 return new StoreFileAction(this);19 }20 }21}22package com.consol.citrus.selenium.actions;23import com.consol.citrus.context.TestContext;24import com.consol.citrus.selenium.endpoint.SeleniumBrowser;25import org.openqa.selenium.WebElement;26public class StoreFileAction extends AbstractSeleniumAction{27 public StoreFileAction(Builder builder){28 super("store-file", builder);29 }30 protected void execute(SeleniumBrowser browser) {31 WebElement element = findElement(browser);32 String value = element.getAttribute("value");33 if(value == null){34 value = element.getAttribute("href");35 }36 getVariableSupport().setVariable(getVariable(), value);37 }38 public static class Builder extends AbstractSeleniumAction.Builder<StoreFileAction, Builder> {39 public StoreFileAction build() {40 return new StoreFileAction(this);41 }42 }43}44package com.consol.citrus.selenium.actions;45import com.consol.citrus.selenium.endpoint.SeleniumBrowser;46import org.openqa.selenium.WebElement;47public class StoreFileAction extends AbstractSeleniumAction{48 public StoreFileAction(Builder builder){49 super("store-file", builder);50 }51 protected void execute(SeleniumBrowser browser) {52 WebElement element = findElement(browser);

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1public class StoreFileActionDemo {2 public static void main(String[] args) {3 SeleniumBrowser browser = new SeleniumBrowser();4 browser.setBrowser(BrowserType.CHROME);5 browser.start();6 StoreFileAction storeFileAction = new StoreFileAction();7 storeFileAction.setBrowser(browser);8 storeFileAction.setFile("C:\\Users\\Rajesh\\Desktop\\test\\test.png");9 storeFileAction.setPath("C:\\Users\\Rajesh\\Desktop\\test\\test1.png");10 storeFileAction.execute();11 }12}13public class StoreTextActionDemo {14 public static void main(String[] args) {15 SeleniumBrowser browser = new SeleniumBrowser();16 browser.setBrowser(BrowserType.CHROME);17 browser.start();18 StoreTextAction storeTextAction = new StoreTextAction();19 storeTextAction.setBrowser(browser);20 storeTextAction.setText("test");21 storeTextAction.setVariable("text");22 storeTextAction.execute();23 }24}25public class TypeActionDemo {26 public static void main(String[] args) {27 SeleniumBrowser browser = new SeleniumBrowser();28 browser.setBrowser(BrowserType.CHROME);29 browser.start();30 TypeAction typeAction = new TypeAction();31 typeAction.setBrowser(browser);32 typeAction.setLocator("id=first_name");33 typeAction.setText("test");34 typeAction.execute();35 }36}37public class WaitForActionDemo {38 public static void main(String[] args) {39 SeleniumBrowser browser = new SeleniumBrowser();40 browser.setBrowser(BrowserType.CHROME);41 browser.setRemoteUrl("

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1public class StoreFileAction {2 public static void main(String[] args) {3 Citrus citrus = Citrus.newInstance();4 Selenium selenium = new SeleniumBuilder()5 .browser(BrowserType.CHROME)6 .start();7 StoreFileActionBuilder storeFileActionBuilder = new StoreFileActionBuilder();8 storeFileActionBuilder.selenium(selenium);9 storeFileActionBuilder.file("C:\\Users\\MyDocuments\\test.txt");10 storeFileActionBuilder.variable("myFile");11 storeFileActionBuilder.build().execute(citrus);12 }13}14public class StoreFileAction {15 public static void main(String[] args) {16 Citrus citrus = Citrus.newInstance();17 Selenium selenium = new SeleniumBuilder()18 .browser(BrowserType.CHROME)19 .start();20 StoreFileActionBuilder storeFileActionBuilder = new StoreFileActionBuilder();21 storeFileActionBuilder.selenium(selenium);22 storeFileActionBuilder.file("C:\\Users\\MyDocuments\\test.txt");23 storeFileActionBuilder.variable("myFile");24 storeFileActionBuilder.build().execute(citrus);25 }26}27public class StoreFileAction {28 public static void main(String[] args) {29 Citrus citrus = Citrus.newInstance();30 Selenium selenium = new SeleniumBuilder()31 .browser(BrowserType.CHROME)32 .start();33 StoreFileActionBuilder storeFileActionBuilder = new StoreFileActionBuilder();34 storeFileActionBuilder.selenium(selenium);35 storeFileActionBuilder.file("C:\\Users\\MyDocuments\\test.txt");36 storeFileActionBuilder.variable("myFile");37 storeFileActionBuilder.build().execute(citrus);38 }39}40public class StoreFileAction {41 public static void main(String[] args) {42 Citrus citrus = Citrus.newInstance();43 Selenium selenium = new SeleniumBuilder()44 .browser(BrowserType.CHROME)45 .start();46 StoreFileActionBuilder storeFileActionBuilder = new StoreFileActionBuilder();47 storeFileActionBuilder.selenium(selenium);

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1StoreFileAction storeFileAction = new StoreFileAction();2storeFileAction.setFile("file");3storeFileAction.setVariable("variable");4storeFileAction.setFileEncoding("fileEncoding");5storeFileAction.setFileCharset("fileCharset");6storeFileAction.setFileContentType("fileContentType");7storeFileAction.setFileTransferMode("fileTransferMode");8storeFileAction.setFileTransferTimeout("fileTransferTimeout");9storeFileAction.setFileTransferPollingInterval("fileTransferPollingInterval");10storeFileAction.setFileTransferPollingUnit("fileTransferPollingUnit");11storeFileAction.setFileTransferPollingForceRestart("fileTransferPollingForceRestart");12storeFileAction.setFileTransferPollingWaitForFile("fileTransferPollingWaitForFile");13storeFileAction.setFileTransferPollingWaitForFileTimeout("fileTransferPollingWaitForFileTimeout");14storeFileAction.setFileTransferPollingWaitForFileUnit("fileTransferPollingWaitForFileUnit");15storeFileAction.setFileTransferPollingWaitForFileForceRestart("fileTransferPollingWaitForFileForceRestart");16storeFileAction.setFileTransferPollingWaitForFileCheckInterval("fileTransferPollingWaitForFileCheckInterval");17storeFileAction.setFileTransferPollingWaitForFileCheckUnit("fileTransferPollingWaitForFileCheckUnit");18storeFileAction.setFileTransferPollingWaitForFileCheckForceRestart("fileTransferPollingWaitForFileCheckForceRestart");19storeFileAction.setFileTransferPollingWaitForFileCheckTimeout("fileTransferPollingWaitForFileCheckTimeout");20storeFileAction.setFileTransferPollingWaitForFileCheckUnit("fileTransferPollingWaitForFileCheckUnit");21storeFileAction.setFileTransferPollingWaitForFileCheckForceRestart("fileTransferPollingWaitForFileCheckForceRestart");22storeFileAction.setFileTransferPollingWaitForFileCheckTimeout("fileTransferPollingWaitForFileCheckTimeout");23storeFileAction.setFileTransferPollingWaitForFileCheckUnit("fileTransferPollingWaitForFileCheckUnit");24storeFileAction.setFileTransferPollingWaitForFileCheckForceRestart("fileTransferPollingWaitForFileCheckForceRestart");25storeFileAction.setFileTransferPollingWaitForFileCheckTimeout("fileTransferPollingWaitForFileCheckTimeout");26storeFileAction.setFileTransferPollingWaitForFileCheckUnit("fileTransferPollingWaitForFileCheckUnit");

Full Screen

Full Screen

StoreFileAction

Using AI Code Generation

copy

Full Screen

1StoreFileAction.Builder storeFileActionBuilder = new StoreFileAction.Builder();2storeFileActionBuilder.target("someTarget");3storeFileActionBuilder.targetType("someTargetType");4storeFileActionBuilder.variable("someVariable");5storeFileActionBuilder.selenium("selenium");6storeFileActionBuilder.testAction("testAction");7storeFileActionBuilder.description("description");8storeFileActionBuilder.timeout("timeout");9storeFileActionBuilder.condition("condition");

Full Screen

Full Screen

Blogs

Check out the latest blogs from LambdaTest on this topic:

August &#8217;21 Updates: Live With iOS 14.5, Latest Browsers, New Certifications, &#038; More!

Hey Folks! Welcome back to the latest edition of LambdaTest’s product updates. Since programmer’s day is just around the corner, our incredible team of developers came up with several new features and enhancements to add some zing to your workflow. We at LambdaTest are continuously upgrading the features on our platform to make lives easy for the QA community. We are releasing new functionality almost every week.

Options for Manual Test Case Development &#038; Management

The purpose of developing test cases is to ensure the application functions as expected for the customer. Test cases provide basic application documentation for every function, feature, and integrated connection. Test case development often detects defects in the design or missing requirements early in the development process. Additionally, well-written test cases provide internal documentation for all application processing. Test case development is an important part of determining software quality and keeping defects away from customers.

30 Top Automation Testing Tools In 2022

The sky’s the limit (and even beyond that) when you want to run test automation. Technology has developed so much that you can reduce time and stay more productive than you used to 10 years ago. You needn’t put up with the limitations brought to you by Selenium if that’s your go-to automation testing tool. Instead, you can pick from various test automation frameworks and tools to write effective test cases and run them successfully.

Website Testing: A Detailed Guide

Websites and web apps are growing in number day by day, and so are the expectations of people for a pleasant web experience. Even though the World Wide Web (WWW) was invented only in 1989 (32 years back), this technology has revolutionized the world we know back then. The best part is that it has made life easier for us. You no longer have to stand in long queues to pay your bills. You can get that done within a few minutes by visiting their website, web app, or mobile app.

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Citrus automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in StoreFileAction

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful