Best JavaScript code snippet using testcafe
autosave-markdown-input.js
Source:autosave-markdown-input.js
1import React from 'react';2import { mount } from 'enzyme';3import { spy } from 'sinon';4import ReactMarkdown from 'react-markdown';5import AutosaveMarkdownTextareaInput from 'components/common/autosave-inputs/autosave-markdown-textarea-input';6import AutosaveTextareaInput from 'components/common/autosave-inputs/autosave-textarea-input';7describe('AutosaveMarkdownTextareaInput component', function () {8 let wrapper;9 beforeEach(function () {10 wrapper = mount(<AutosaveMarkdownTextareaInput11 textareaLineHeight={ 16 }12 fieldType='description'13 value={ 'value' }14 />);15 });16 it('should render ReactMarkdown by default', function () {17 wrapper.find(AutosaveTextareaInput).exists().should.be.false();18 wrapper.find(ReactMarkdown).exists().should.be.true();19 });20 it('should render AutosaveTextareaInput after user click on Markdown', function () {21 wrapper.find('.autosave-markdown-textarea-input').simulate('click');22 wrapper.find(ReactMarkdown).exists().should.be.false();23 const textAreaInput = wrapper.find(AutosaveTextareaInput);24 textAreaInput.exists().should.be.true();25 textAreaInput.prop('onBlur').should.be.eql(wrapper.instance().onTextAreaBlur);26 });27 it('should call onTextAreaBlur on textarea blur', function () {28 const onTextAreaBlurSpy = spy(wrapper.instance(), 'onTextAreaBlur');29 wrapper.find(ReactMarkdown).childAt(0).simulate('click');30 wrapper.find(ReactMarkdown).exists().should.be.false();31 const autosaveTextareaInput = wrapper.find(AutosaveTextareaInput);32 autosaveTextareaInput.exists().should.be.true();33 autosaveTextareaInput.find('textarea').simulate('blur');34 onTextAreaBlurSpy.should.be.calledOnce();35 wrapper.find(ReactMarkdown).exists().should.be.true();36 wrapper.find(AutosaveTextareaInput).exists().should.be.false();37 });38 context('value is empty', function () {39 it('should render class has-placeholder', function () {40 const wrapper = mount(<AutosaveMarkdownTextareaInput41 textareaLineHeight={ 16 }42 fieldType='description'43 placeholderClassName={ 'description-placeholder-classname' }44 value={ '' }45 />);46 wrapper.childAt(0).prop('className').should.containEql('description-placeholder-classname');47 });48 });49 context('value is not empty', function () {50 let wrapper;51 beforeEach(function () {52 wrapper = mount(<AutosaveMarkdownTextareaInput53 textareaLineHeight={ 16 }54 placeholderClassName={ 'description-placeholder-classname' }55 fieldType='description'56 value={ 'value' }57 />);58 });59 it('should not render class placeholder', function () {60 wrapper.childAt(0).prop('className').should.not.containEql('description-placeholder-classname');61 });62 it('should call setState once when user input', function () {63 const instance = wrapper.instance();64 const setStateSpy = spy(instance, 'setState');65 wrapper.find('.autosave-markdown-textarea-input').simulate('click');66 setStateSpy.resetHistory();67 wrapper.find('textarea').simulate('change', { target: { value: '' } });68 setStateSpy.should.be.calledOnce();69 setStateSpy.resetHistory();70 wrapper.find('textarea').simulate('change', { target: { value: '1' } });71 wrapper.find('textarea').simulate('change', { target: { value: '12' } });72 wrapper.find('textarea').simulate('change', { target: { value: '123' } });73 setStateSpy.should.be.calledOnce();74 });75 it('should render class placeholder after user clear value', function () {76 wrapper.find('.autosave-markdown-textarea-input').simulate('click');77 wrapper.find('textarea').simulate('change', { target: { value: '' } });78 wrapper.childAt(0).prop('className').should.containEql('description-placeholder-classname');79 });80 });...
CommentBox.js
Source:CommentBox.js
1import React from 'react';2import PropTypes from 'prop-types';3import styled, { css } from 'styled-components';4import { th } from '@pubsweet/ui-toolkit';5import CommentItemList from './CommentItemList';6import CommentReply from './CommentReply';7const inactive = css`8 background: ${th('colorBackgroundHue')};9 cursor: pointer;10 transition: box-shadow 0.2s;11 /* transition: background-color 0.2s; */12 &:hover {13 /* background: white; */14 box-shadow: 0 0 1px 2px ${th('colorBackgroundTabs')};15 }16`;17const Wrapper = styled.div`18 background: white;19 border: 1px solid ${th('colorBackgroundTabs')};20 border-radius: 3px;21 box-sizing: border-box;22 display: flex;23 flex-direction: column;24 font-family: ${th('fontInterface')};25 ${props => !props.active && inactive}26`;27const Head = styled.div`28 display: flex;29 justify-content: flex-end;30 padding: 8px 16px 0;31`;32const Resolve = styled.button`33 align-self: flex-end;34 border: none;35 background: none;36 color: #0042c7;37 cursor: pointer;38 margin-bottom: 12px;39 &:hover {40 background: ${th('colorBackgroundHue')};41 border: none;42 }43`;44const StyledReply = styled(CommentReply)`45 border-top: ${props => !props.isNewComment && `3px solid #E1EBFF`};46`;47const CommentBox = props => {48 const {49 active,50 className,51 commentId,52 commentData,53 onClickBox,54 onClickPost,55 onClickResolve,56 onTextAreaBlur,57 } = props;58 // send signal to make this comment active59 const onClickWrapper = () => {60 if (active) return;61 onClickBox(commentId);62 };63 if (!active && (!commentData || commentData.length === 0)) return null;64 return (65 <Wrapper active={active} className={className} onClick={onClickWrapper}>66 {active && commentData.length > 0 && (67 <Head>68 <Resolve onClick={() => onClickResolve(commentId)}>Resolve</Resolve>69 </Head>70 )}71 <CommentItemList active={active} data={commentData} />72 {active && (73 <StyledReply74 onTextAreaBlur={onTextAreaBlur}75 isNewComment={commentData.length === 0}76 onClickPost={onClickPost}77 />78 )}79 </Wrapper>80 );81};82CommentBox.propTypes = {83 /** Whether this is the current active comment */84 active: PropTypes.bool,85 /** List of objects containing data for comment items */86 commentData: PropTypes.arrayOf(87 PropTypes.shape({88 content: PropTypes.string.isRequired,89 displayName: PropTypes.string.isRequired,90 timestamp: PropTypes.string.number,91 }),92 ),93 /** This comment's id in the document */94 commentId: PropTypes.string.isRequired,95 /** Function to run when box is clicked on.96 * Use this to make comment active on click (it passes on the comment id).97 * eg. `onClickBox = commentId => doSth(commentId)`98 * Will only run if comment is not active already.99 */100 onClickBox: PropTypes.func.isRequired,101 /** Function to run when "post" button is clicked to send reply */102 onClickPost: PropTypes.func.isRequired,103 /** Function to run when "resolve" button is clicked */104 onClickResolve: PropTypes.func.isRequired,105 /** Function to run when text area loses focus */106 onTextAreaBlur: PropTypes.func.isRequired,107};108CommentBox.defaultProps = {109 active: false,110 commentData: [],111};...
ListItem.js
Source:ListItem.js
...68 />69 <TextareaAutosize70 placeholder="New item..."71 onChange={onTextAreaUpdate(index)}72 onBlur={onTextAreaBlur(index)}73 defaultValue={item.text}74 className={animateStrikethrough ? "strikethroughText" : undefined}75 />76 </div>77 );78}...
textarea.js
Source:textarea.js
...13 color: e.source.realColor14 });15 }16}17function onTextAreaBlur(e) {18 if (_.isEmpty(e.source.value)) {19 e.source.applyProperties({20 value: e.source.hintText,21 color: e.source.hintTextColor || '#AAA'22 });23 } else {24 e.source.color = e.source.realColor;25 }26}27module.exports = function(args) {28 _.defaults(args, {29 /**30 * @property {Boolean} [useDoneToolbar=false] Add a default toolbar with a *Done* button that simply blur the TextField.31 */32 useDoneToolbar: false,33 });34 var $this = Ti.UI.createTextArea(args);35 if (OS_IOS) {36 /**37 * Get the effective value when using hintText hack38 * @return {String}39 */40 $this.getRealValue = function(){41 if ($this.hintText === $this.value) return '';42 return $this.value;43 };44 /**45 * Set the real value when using hintText hack46 */47 $this.setRealValue = function(v){48 $this.value = v;49 onTextAreaBlur({50 source: $this51 });52 };53 $this.getHintText = function() {54 return $this.hintText;55 };56 $this.setHintText = function(val) {57 $this.hintText = val;58 };59 } else {60 $this.setRealValue = function(v){61 $this.value = v;62 };63 $this.getRealValue = function(){64 return $this.value;65 };66 }67 //////////////////////68 // Parse arguments //69 //////////////////////70 if (OS_IOS && args.useDoneToolbar === true) {71 $this.keyboardToolbar = UIUtil.buildKeyboardToolbar({72 done: function() {73 $this.fireEvent('toolbar.done');74 $this.blur();75 },76 cancel: function() {77 $this.fireEvent('toolbar.cancel');78 $this.blur();79 }80 });81 }82 if (OS_IOS && args.hintText != null) {83 $this.realColor = args.color || '#000';84 $this.hintText = args.hintText;85 $this.addEventListener('focus', onTextAreaFocus);86 $this.addEventListener('blur', onTextAreaBlur);87 onTextAreaBlur({ source: $this });88 }89 return $this;...
TextareaWithButton.js
Source:TextareaWithButton.js
1import React, {Component} from 'react';2import '../style/TextareaWithButton.css';3const R = require('ramda');4class TextareaWithButton extends Component5{6 constructor(props) {7 super(props);8 this.state = {9 buttonVisible: false,10 textareaValue: props.value,11 };12 this.buttonVisibilityTimeout = 0;13 }14 componentWillReceiveProps(nextProps) {15 this.setState({textareaValue: nextProps.value});16 }17 render() {18 return (19 <div className="TextareaWithButton">20 <textarea21 className="TextareaWithButton__textarea AppTheme__element--blueBorder"22 value={this.state.textareaValue}23 onFocus={() => this.onTextareaFocus()}24 onBlur={() => this.onTextareaBlur()}25 onChange={(event) => this.onTextareaChange(event)}26 onKeyPress={(event) => this.onTextareaKeyPress(event)}27 maxLength={this.props.maxLength}28 />29 <button30 className="TextareaWithButton__button AppTheme__button--smallOrange"31 style={{visibility:(this.state.buttonVisible?'visible':'hidden')}}32 >OK</button>33 </div>34 )35 }36 componentWillUnmount() {37 clearTimeout(this.buttonVisibilityTimeout);38 }39 onTextareaFocus() {40 this.setButtonVisible(true); // show button41 if(R.is(Function,this.props.onFocus)) { this.props.onFocus(); }42 }43 onTextareaBlur() {44 this.setButtonVisible(false,200); // hide button, after short delay45 if(R.is(Function,this.props.onBlur)) { this.props.onBlur(this.state.textareaValue); }46 }47 onTextareaKeyPress(event) {48 // silently disallow the Enter key49 if(event.key==='Enter') {50 event.preventDefault();51 }52 }53 onTextareaChange(event) {54 this.setState({textareaValue:event.target.value});55 }56 setButtonVisible(value, delayMillis = 0)57 {58 clearTimeout(this.buttonVisibilityTimeout); // clear any previous timeouts59 this.buttonVisibilityTimeout = setTimeout(() => {60 this.setState({buttonVisible: value});61 },delayMillis);62 }63}...
index.js
Source:index.js
1/**2 * Application entry point3 */4// Load application styles5import 'styles/index.scss';6import AddressParse from './lib/address-parse'7import $ from 'jquery'8const parse = () => {9 let type = 010 const onTextAreaBlur = (e) => {11 const address = e.target.value12 const parseResult = AddressParse(address, { type, textFilter: ['çµè©±', 'é»è©±', 'è¯ç³»äºº'] })13 console.log(parseResult)14 $('#result').empty();15 $('#result').append(`<ul>${Object.entries(parseResult).map(([k, v]) => `<li>${k}ï¼${v}</li>`).join('')}</ul>`)16 }17 $('#addressContent').bind('input propertychange', onTextAreaBlur)18 $('#addressList li').on('click', (e) => {19 $('#addressContent').val(e.target.innerText)20 $('#addressContent')[0].dispatchEvent(new Event('input'));21 })22 $('#select').val(type)23 $('#select').change((e) => {24 type = Number(e.target.value)25 })26}...
task.js
Source:task.js
1const textarea = document.getElementById('editor');2const clearButtonElement = document.getElementById('clear-btn');3// Events4document.addEventListener('DOMContentLoaded', onLoad);5textarea.addEventListener('input', onTextareaBlur);6clearButtonElement.addEventListener('click', onBtnClick);7// Handlers8function onLoad() {9 let text = localStorage.getItem('text');10 textarea.value = text;11}12function onTextareaBlur() {13 let text = textarea.value;14 localStorage.setItem('text', text);15}16function onBtnClick() {17 textarea.value = '';18 localStorage.removeItem('text');...
form-text-area.js
Source:form-text-area.js
...5 <label htmlFor={id}>{children}</label>6 <textarea7 id={id}8 onBlur={event => {9 onTextAreaBlur(event.target.value)10 }}11 placeholder={placeholder}12 />13 </div>14 )15}...
Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3 .typeText('#developer-name', 'John Smith')4 .click('#submit-button')5 .takeScreenshot()6 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');7});8const {Builder, By, Key, until} = require('selenium-webdriver');9const chrome = require('selenium-webdriver/chrome');10const driver = new Builder()11 .forBrowser('chrome')12 .setChromeOptions(new chrome.Options().headless())13 .build();14driver.findElement(By.id('developer-name')).sendKeys('John Smith');15driver.findElement(By.id('submit-button')).click();16driver.takeScreenshot().then(17 function(image, err) {18 require('fs').writeFile('out.png', image, 'base64', function(err) {19 console.log(err);20 });21 }22);23driver.wait(until.elementLocated(By.id('article-header')), 10000);24driver.findElement(By.id('article-header')).getText().then(function(text){25 console.log(text);26});27WebElement element = driver.findElement(By.id("id"));28String text = element.getText();
Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3 .typeText('#developer-name', 'John Smith')4 .click('#macos')5 .click('#submit-button');6 const articleHeader = await Selector('.result-content').find('h1');7 let headerText = await articleHeader.innerText;8});9import { Selector } from 'testcafe';10test('My first test', async t => {11 .typeText('#developer-name', 'John Smith')12 .click('#macos')13 .click('#submit-button');14 const articleHeader = await Selector('.result-content').find('h1');15 let headerText = await articleHeader.innerText;16});
Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3 .typeText('#developer-name', 'John Smith')4 .click('#windows')5 .click('#submit-button');6 const articleHeader = await Selector('.result-content').find('h1');7 let headerText = await articleHeader.innerText;8});9test('My second test', async t => {10 .typeText('#developer-name', 'John Smith')11 .click('#windows')12 .click('#submit-button');13 const articleHeader = await Selector('.result-content').find('h1');14 let headerText = await articleHeader.innerText;15});16import { Selector } from 'testcafe';17test('My first test', async t => {18 .typeText('#developer-name', 'John Smith')19 .click('#windows')20 .click('#submit-button');21 const articleHeader = await Selector('.result-content').find('h1');22 let headerText = await articleHeader.innerText;23});24test('My second test', async t => {25 .typeText('#developer-name', 'John Smith')26 .click('#windows')27 .click('#submit-button');28 const articleHeader = await Selector('.result-content').find('h1');29 let headerText = await articleHeader.innerText;30});31import { Selector } from 'testcafe';32test('My first test', async t => {33 .typeText('#developer-name', 'John Smith')34 .click('#windows')35 .click('#submit-button');36 const articleHeader = await Selector('.result-content').find('h1');
Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3 .typeText('#developer-name', 'John Smith')4 .click('#submit-button')5 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');6});7import { Selector } from 'testcafe';8test('My first test', async t => {9 .typeText('#developer-name', 'John Smith')10 .click('#submit-button')11 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');12});13import { Selector } from 'testcafe';14test('My first test', async t => {15 .typeText('#developer-name', 'John Smith')16 .click('#submit-button')17 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');18});19import { Selector } from 'testcafe';20test('My first test', async t => {21 .typeText('#developer-name', 'John Smith')22 .click('#submit-button')23 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');24});25import { Selector } from 'testcafe';26test('My first
Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3 .typeText('#developer-name', 'John Smith')4 .click('#submit-button');5 await t.expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');6});7import { Selector } from 'testcafe';8test('My first test', async t => {9 .typeText('#developer-name', 'John Smith')10 .click('#submit-button');11 await t.expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');12});13import { Selector } from 'testcafe';14test('My first test', async t => {15 .typeText('#developer-name', 'John Smith')16 .click('#submit-button');17 await t.expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');18});19import { Selector } from 'testcafe';20test('My first test', async t => {21 .typeText('#developer-name', 'John Smith')22 .click('#submit-button');23 await t.expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');24});25import { Selector } from 'testcafe';
Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3 const textarea = Selector('#developer-name');4 .typeText(textarea, 'Peter')5 .click('#submit-button')6 .expect(Selector('#article-header').innerText).eql('Thank you, Peter!');7});8describe('My WebdriverIO tests', () => {9 it('should blur a textarea', () => {10 browser.setValue('#developer-name', 'Peter');11 browser.execute(() => {12 document.getElementById('developer-name').onTextAreaBlur();13 });14 browser.click('#submit-button');15 const header = browser.getText('#article-header');16 assert.equal(header, 'Thank you, Peter!');17 });18});
Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3 .typeText('#developer-name', 'John Smith')4 .click('#submit-button')5 .debug()6 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');7});8test('My second test', async t => {9 .typeText('#developer-name', 'John Smith')10 .click('#submit-button')11 .debug()12 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');13});14test('My first test', async t => {15 await t.debug();16 .typeText('#developer-name', 'John Smith')17 .click('#submit-button')18 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');19});20test('My first test', async t => {21 await t.debug();22 .typeText('#developer-name', 'John Smith')23 .click('#submit-button')24 .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');25});26I tried to use the await t.debug(); line in the middle of the test, but the test did not stop at
Using AI Code Generation
1import { t } from 'testcafe';2export default class Test {3 constructor() {4 this.textArea = Selector('#textArea');5 }6 async onTextAreaBlur() {7 .expect(this.textArea.value)8 .eql('Hello');9 }10}11import Test from './test.js';12test('Test', async t => {13 const test = new Test();14 await test.onTextAreaBlur();15});16I have tried to use the following code to use the onTextAreaBlur() method of Test class in testcafe.js file. But it is not working. It is throwing an error: Cannot read property 'value' of undefined. Can anyone please help me in resolving this issue?17test('Check that the element has an attribute', async t => {18 .expect(Selector('#test').getAttribute('data-test')).eql('test');19});
Using AI Code Generation
1import { t } from 'testcafe';2class TestPage {3 constructor() {4 this.textArea = Selector('textarea');5 }6 async onTextAreaBlur() {7 .expect(this.textArea.value).eql('test')8 .expect(this.textArea.value).eql('test2');9 }10}11export default new TestPage();12import testPage from './test.js';13test('Test', async t => {14 await testPage.onTextAreaBlur();15});16 0 passed (2s)
Using AI Code Generation
1 .setNativeDialogHandler(() => true)2 .click(Selector('button').withText('Click me'))3 .expect(Selector('p').withText('You clicked the button!').exists).ok()4 .expect(Selector('p').withText('You entered:').exists).notOk()5 .click(Selector('input'))6 .typeText(Selector('input'), 'Test')7 .click(Selector('button').withText('Click me'))8 .expect(Selector('p').withText('You clicked the button!').exists).ok()9 .expect(Selector('p').withText('You entered: Test').exists).ok()10 .setNativeDialogHandler(() => true)11 .click(Selector('button').withText('Click me'))12 .expect(Selector('p').withText('You clicked the button!').exists).ok()13 .expect(Selector('p').withText('You entered:').exists).notOk()14 .click(Selector('input'))15 .typeText(Selector('input'), 'Test')16 .click(Selector('button').withText('Click me'))17 .expect(Selector('p').withText('You clicked the button!').exists).ok()18 .expect(Selector('p').withText('You entered: Test').exists).ok()19 .click(Selector('button').withText('Click me'))20 .expect(Selector('p').withText('You clicked the button!').exists).ok()21 .debug()22 .click(Selector('button').withText('Click me'))23 .expect(Selector('p').withText('You clicked the button!').exists).ok()24 .debug()25If you have a test that fails, it is a good practice to add the .debug() method to
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!