Best JavaScript code snippet using playwright-internal
metric.model.js
Source:metric.model.js
...67 return youtubeAnalytics.query(videoId, channelId, accessToken).then(function(data){68 if(data.rows){69 debug('youtube analytics value: ', data.rows);70 return Promise.join(71 _this.updateWrapper(videoId + ':' + 'youtube:views', 'Content:Service:Metric', 'totalViews', data.rows[0][0], moment(1000), userId, contentId, campaignId, companyId),72 _this.updateWrapper(videoId + ':' + 'youtube:likes', 'Content:Service:Metric', 'totalLikes', data.rows[0][1], moment(1000), userId, contentId, campaignId, companyId),73 _this.updateWrapper(videoId + ':' + 'youtube:comments', 'Content:Service:Metric', 'totalComments', data.rows[0][2], moment(1000), userId, contentId, campaignId, companyId),74 _this.updateWrapper(videoId + ':' + 'youtube:shares', 'Content:Service:Metric', 'totalShares', data.rows[0][3], moment(1000), userId, contentId, campaignId, companyId),75 _this.updateWrapper(videoId + ':' + 'youtube:averageViewDuration', 'Content:Service:Metric', 'totalAverageViewDuration', data.rows[0][4], moment(1000), userId, contentId, campaignId, companyId),76 function(){77 return 1;78 }79 );80 }81 });82});83MetricSchema.statics.updateYoutubeDailyMetrics = Promise.method(function(videoId, channelId, service, accessToken, userId, contentId, campaignId, companyId){84 var _this = this;85 debug('update youtube daily metrics');86 return youtubeAnalytics.queryByDay(videoId, channelId, accessToken).then(function(data){87 if(data.rows){88 debug('youtube daily analytics value: ', data.rows);89 return Promise.each(data.rows, function(item){90 var day = moment(item[0], 'YYYY-MM-DD');91 debug('youtube values: ', item);92 debug('day: ', day);93 return Promise.join(94 _this.updateWrapper(contentId + ':' + 'youtube:day:views', 'Content:Service:Dimension:Metric', 'views', item[1], day, userId, contentId, campaignId, companyId),95 _this.updateWrapper(contentId + ':' + 'youtube:day:likes', 'Content:Service:Dimension:Metric', 'likes', item[2], day, userId, contentId, campaignId, companyId),96 _this.updateWrapper(contentId + ':' + 'youtube:day:comments', 'Content:Service:Dimension:Metric', 'comments', item[3], day, userId, contentId, campaignId, companyId),97 _this.updateWrapper(contentId + ':' + 'youtube:day:shares', 'Content:Service:Dimension:Metric', 'shares', item[4], day, userId, contentId, campaignId, companyId),98 _this.updateWrapper(contentId + ':' + 'youtube:day:estimatedMinutesWatched', 'Content:Service:Dimension:Metric', 'estimatedMinutesWatched', item[5], day, userId, contentId, campaignId, companyId),99 function(){100 return 1;101 }102 );103 });104 }105 else{106 console.log('no data found: ', data);107 return 0;108 }109 });110});111MetricSchema.statics.getYoutubeMetrics = Promise.method(function(videoId){112 var _this = this;113 debug('get youtube metrics');114 return Promise.join(115 _this.getCached(videoId, 'youtube', 'views'),116 _this.getCached(videoId, 'youtube', 'likes'),117 _this.getCached(videoId, 'youtube', 'comments'),118 _this.getCached(videoId, 'youtube', 'shares'),119 _this.getCached(videoId, 'youtube', 'averageViewDuration'),120 function(views, likes, comments, shares, duration){121 return {122 views: views || {value: 0},123 likes: likes || {value: 0},124 comments: comments || {value: 0},125 shares: shares || {value: 0},126 averageViewDuration: duration || {value: 0}127 };128 }129 );130});131MetricSchema.statics.fetch = Promise.method(function(identifier, serviceName, userId, accessToken){132 var _this = this;133 debug('fetch metrics for ' + serviceName + ' service');134 switch(serviceName){135 case 'twitter':136 return twitter.showUser(identifier, accessToken.token, accessToken.secret)137 .then(function(data){138 debug('twitter user: ' + data.name);139 return _this.updateWrapper(140 userId + ':' + serviceName + ':followers',141 'User:Service:Metric',142 'followers',143 data.followers_count,144 moment(1000),145 userId);146 }).catch(function(err){147 debug('err: ', err);148 });149 case 'facebook':150 return facebook.showUser('me', accessToken).then(function(data){151 debug('facebook user: ', data.name);152 return _this.updateWrapper(153 userId + ':' + serviceName + ':followers',154 'User:Service:Metric',155 'followers',156 data.friends ? data.friends.summary.total_count : 0,157 moment(1000),158 userId);159 });160 case 'youtube':161 return youtube.showUser('self', accessToken).then(function(data){162 debug('youtube value: ', data.statistics.subscriberCount);163 var subscriberCount = _this.updateWrapper(164 userId + ':' + serviceName + ':followers',165 'User:Service:Metric',166 'followers',167 data.statistics.subscriberCount,168 moment(1000),169 userId);170 var viewCount = _this.updateWrapper(171 userId + ':' + serviceName + ':viewCount',172 'User:Service:Metric',173 'viewCount',174 data.statistics.viewCount,175 moment(1000),176 userId);177 var videoCount = _this.updateWrapper(178 userId + ':' + serviceName + ':videoCount',179 'User:Service:Metric',180 'videoCount',181 data.statistics.videoCount,182 moment(1000),183 userId);184 return Promise.join(subscriberCount, viewCount, videoCount, function(sub, view, video){185 return [sub, view, video]; 186 });187 });188 case 'googleplus':189 return googleplus.showUser('me', accessToken).then(function(data){190 debug('googleplus value: ', data.circledByCount);191 return _this.updateWrapper(192 userId + ':' + serviceName + ':followers',193 'User:Service:Metric',194 'followers',195 data.circledByCount,196 moment(1000),197 userId);198 });199 case 'googleanalytics':200 return googleanalytics.showUser('me', accessToken).then(function(data){201 debug('google analytics account: ', data);202 return _this.updateWrapper(203 userId + ':' + serviceName + ':followers',204 'User:Service:Metric',205 'followers',206 data.friends.summary.total_count,207 moment(1000),208 userId);209 }).catch(function(err){210 debug(serviceName + ' not found for this provider');211 return null;212 });213 case 'instagram':214 return instagram.showUser('self', accessToken).then(function(data){215 debug('instagram user: ', data.full_name);216 return _this.updateWrapper(217 userId + ':' + serviceName + ':followers',218 'User:Service:Metric',219 'followers',220 data.counts.followed_by,221 moment(1000),222 userId);223 });224 default:225 return 0;226 }227});228MetricSchema.static('updateWrapper', Promise.method(function(id, type, metric, value, timestamp, userId, contentId, campaignId, companyId) {229 if(!value || value===0){230 return 0;...
NavBar.test.js
Source:NavBar.test.js
...62 it('should render the navbar even when the user is still undefined', async () => {63 // Arrange64 // Act65 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);66 await updateWrapper(wrapper);67 // Assert68 expect(wrapper).toMatchSnapshot();69 const collapse = wrapper.find('Collapse');70 expect(collapse.props().isOpen).toBe(false);71 const modalAbout = wrapper.find('ModalAbout');72 expect(modalAbout.length).toBe(0);73 wrapper.unmount();74 });75 it('should trigger the local storage rebuild when we click on the rebuild dropdown item', async () => {76 // Arrange77 localStorageBuilder.tryToRun.mockImplementation(async () => {});78 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);79 await updateWrapper(wrapper);80 const dropdownItemRebuildLocalStorage = wrapper.find('DropdownItem').at(5);81 // Act82 dropdownItemRebuildLocalStorage.simulate('click');83 await updateWrapper(wrapper);84 // Assert85 expect(localStorageBuilder.tryToRun).toBeCalledTimes(1);86 });87 it('should open the modal about when the user click on the about button', async () => {88 // Arrange89 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);90 await updateWrapper(wrapper);91 const dropdownItemAbout = wrapper.find('DropdownItem').at(9);92 // Act93 dropdownItemAbout.simulate('click');94 await updateWrapper(wrapper);95 // Assert96 const modalAbout = wrapper.find('ModalAbout');97 expect(modalAbout.props().visible).toBe(true);98 });99 it('should toggle the navbar when the user click on the navbar button', async () => {100 // Arrange101 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);102 await updateWrapper(wrapper);103 const navBarButton = wrapper.find('NavbarToggler');104 // Act105 navBarButton.simulate('click');106 await updateWrapper(wrapper);107 // Assert108 const collapse = wrapper.find('Collapse');109 expect(collapse.props().isOpen).toBe(true);110 });111 it('should re-render the navbar when the user changed', async () => {112 // Arrange113 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);114 await updateWrapper(wrapper);115 const user = {116 _uiId: 'user_01',117 name: 'torruella',118 email: 'test@axios',119 firstname: 'paul',120 imageFolderSizeInByte: 1000,121 imageFolderSizeLimitInByte: 10000,122 };123 // Act124 userContext.onUserChanged(user);125 await updateWrapper(wrapper);126 // Assert127 const collapse = wrapper.find('Collapse');128 expect(collapse.props().isOpen).toBe(false);129 const modalAbout = wrapper.find('ModalAbout');130 expect(modalAbout.length).toBe(0);131 const dropdownToggle = wrapper.find('DropdownToggle').at(0);132 expect(dropdownToggle.text()).toBe(user.email);133 const imageFolderGauge = wrapper.find('Memo(ImageFolderGauge)');134 expect(imageFolderGauge.props()).toEqual({ storageSizeInMB: (1000 / 1048576), storageSizeLimitInMB: (10000 / 1048576) });135 });136 it('should re-render the navbar when the user add an image', async () => {137 // Arrange138 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);139 await updateWrapper(wrapper);140 const user = {141 _uiId: 'user_01',142 name: 'torruella',143 email: 'test@axios',144 firstname: 'paul',145 imageFolderSizeInByte: 1000,146 imageFolderSizeLimitInByte: 10000,147 };148 userContext.onUserChanged(user);149 await updateWrapper(wrapper);150 // Act151 userContext.onImageAdded(100);152 await updateWrapper(wrapper);153 // Assert154 const collapse = wrapper.find('Collapse');155 expect(collapse.props().isOpen).toBe(false);156 const modalAbout = wrapper.find('ModalAbout');157 expect(modalAbout.length).toBe(0);158 const dropdownToggle = wrapper.find('DropdownToggle').at(0);159 expect(dropdownToggle.text()).toBe(user.email);160 const imageFolderGauge = wrapper.find('Memo(ImageFolderGauge)');161 expect(imageFolderGauge.props()).toEqual({ storageSizeInMB: (1100 / 1048576), storageSizeLimitInMB: (10000 / 1048576) });162 });163 it('should re-render the navbar when the user removed an image', async () => {164 // Arrange165 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);166 await updateWrapper(wrapper);167 const user = {168 _uiId: 'user_01',169 name: 'torruella',170 email: 'test@axios',171 firstname: 'paul',172 imageFolderSizeInByte: 1000,173 imageFolderSizeLimitInByte: 10000,174 };175 userContext.onUserChanged(user);176 await updateWrapper(wrapper);177 // Act178 userContext.onImageRemoved(100);179 await updateWrapper(wrapper);180 // Assert181 const collapse = wrapper.find('Collapse');182 expect(collapse.props().isOpen).toBe(false);183 const modalAbout = wrapper.find('ModalAbout');184 expect(modalAbout.length).toBe(0);185 const dropdownToggle = wrapper.find('DropdownToggle').at(0);186 expect(dropdownToggle.text()).toBe(user.email);187 const imageFolderGauge = wrapper.find('Memo(ImageFolderGauge)');188 expect(imageFolderGauge.props()).toEqual({ storageSizeInMB: (900 / 1048576), storageSizeLimitInMB: (10000 / 1048576) });189 });190 it('should logout when the user clicks on logout', async () => {191 // Arrange192 jest.spyOn(userProxy, 'logout').mockImplementation(() => userContext.onUserChanged(undefined));193 const wrapper = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><NavBar /></IntlProvider>);194 await updateWrapper(wrapper);195 const user = {196 _uiId: 'user_01',197 name: 'torruella',198 email: 'test@axios',199 firstname: 'paul',200 imageFolderSizeInByte: 1000,201 imageFolderSizeLimitInByte: 10000,202 };203 userContext.onUserChanged(user);204 await updateWrapper(wrapper);205 // Act206 const logoutButton = wrapper.find('DropdownItem').at(7);207 logoutButton.simulate('click');208 await updateWrapper(wrapper);209 // Assert210 const collapse = wrapper.find('Collapse');211 expect(collapse.props().isOpen).toBe(false);212 const modalAbout = wrapper.find('ModalAbout');213 expect(modalAbout.length).toBe(0);214 const dropdownToggle = wrapper.find('DropdownToggle').at(0);215 expect(dropdownToggle.text()).toBe('Login');216 const imageFolderGauge = wrapper.find('Memo(ImageFolderGauge)');217 expect(imageFolderGauge.props()).toEqual({ storageSizeInMB: 0, storageSizeLimitInMB: 0 });218 expect(userProxy.logout).toHaveBeenCalledTimes(1);219 });...
ModalEditTask.test.js
Source:ModalEditTask.test.js
...49 isVisible = !isVisible;50 });51 // Act52 const modalEditTask = mount(<ModalEditTask equipment={equipment} task={task} visible={isVisible} onTaskSaved={onTaskSaved} onTaskDeleted={onTaskDeleted} toggle={toggleFn} />);53 await updateWrapper(modalEditTask);54 // Assert55 expect(modalEditTask).toMatchSnapshot();56 expect(modalEditTask.props().visible).toBe(true);57 expect(modalEditTask.find('ModalFooter').find('Button').length).toBe(3);58 });59 it('should render 2 buttons (cancel/create) when we create a new entry', async () => {60 // Arrange61 taskProxy.existTask.mockImplementation(async () => Promise.resolve(false));62 const onTaskSaved = jest.fn();63 const onTaskDeleted = jest.fn();64 let isVisible = true;65 const toggleFn = jest.fn().mockImplementation(() => {66 isVisible = !isVisible;67 });68 // Act69 const modalEditTask = mount(<ModalEditTask equipment={equipment} task={task} visible={isVisible} onTaskSaved={onTaskSaved} onTaskDeleted={onTaskDeleted} toggle={toggleFn} />);70 await updateWrapper(modalEditTask);71 // Assert72 expect(modalEditTask.props().visible).toBe(true);73 expect(modalEditTask.find('ModalFooter').find('Button').length).toBe(2);74 });75 it('Should save the task using the task proxy when clicking on Save', async () => {76 // Arrange77 taskProxy.existTask.mockImplementation(async () => Promise.resolve(true));78 jest.spyOn(taskProxy, 'createOrSaveTask').mockImplementation(async (equipmentId, newTask) => Promise.resolve(newTask));79 const onTaskSaved = jest.fn();80 const onTaskDeleted = jest.fn();81 let isVisible = true;82 const toggleFn = jest.fn().mockImplementation(() => {83 isVisible = !isVisible;84 });85 const modalEditTask = mount(<ModalEditTask equipment={equipment} task={task} visible={isVisible} onTaskSaved={onTaskSaved} onTaskDeleted={onTaskDeleted} toggle={toggleFn} />);86 await updateWrapper(modalEditTask);87 const myForm = modalEditTask.find('Memo(MyForm)');88 // Act89 myForm.simulate('submit');90 await updateWrapper(modalEditTask);91 // Assert92 expect(taskProxy.createOrSaveTask).toBeCalledTimes(1);93 expect(onTaskSaved).toBeCalledTimes(1);94 expect(toggleFn).toBeCalledTimes(1);95 });96 it('Should close the modal when clicking on Cancel', async () => {97 // Arrange98 taskProxy.existTask.mockImplementation(async () => Promise.resolve(true));99 const onTaskSaved = jest.fn();100 const onTaskDeleted = jest.fn();101 let isVisible = true;102 const toggleFn = jest.fn().mockImplementation(() => {103 isVisible = !isVisible;104 });105 const modalEditTask = mount(<ModalEditTask equipment={equipment} task={task} visible={isVisible} onTaskSaved={onTaskSaved} onTaskDeleted={onTaskDeleted} toggle={toggleFn} />);106 await updateWrapper(modalEditTask);107 const cancelButton = modalEditTask.find('ModalFooter').find('Button').at(1);108 // Act109 cancelButton.simulate('click');110 await updateWrapper(modalEditTask);111 // Assert112 expect(toggleFn).toBeCalledTimes(1);113 });114 it('The deletion should be preceded by a confirmation message', async () => {115 // Arrange116 taskProxy.existTask.mockImplementation(async () => Promise.resolve(true));117 const onTaskSaved = jest.fn();118 const onTaskDeleted = jest.fn();119 let isVisible = true;120 const toggleFn = jest.fn().mockImplementation(() => {121 isVisible = !isVisible;122 });123 const modalEditTask = mount(<ModalEditTask equipment={equipment} task={task} visible={isVisible} onTaskSaved={onTaskSaved} onTaskDeleted={onTaskDeleted} toggle={toggleFn} />);124 await updateWrapper(modalEditTask);125 const deleteButton = modalEditTask.find('ModalFooter').find('Button').at(2);126 // Act127 deleteButton.simulate('click');128 await updateWrapper(modalEditTask);129 // Assert130 const confirmationModal = modalEditTask.find('ModalYesNoConfirmation');131 expect(confirmationModal.props().visible).toBe(true);132 });133 it('Clicking yes on the confirmation should call the entryProxy.delete function', async () => {134 // Arrange135 taskProxy.existTask.mockImplementation(async () => Promise.resolve(true));136 jest.spyOn(taskProxy, 'deleteTask');137 const onTaskSaved = jest.fn();138 const onTaskDeleted = jest.fn();139 let isVisible = true;140 const toggleFn = jest.fn().mockImplementation(() => {141 isVisible = !isVisible;142 });143 const modalEditTask = mount(<ModalEditTask equipment={equipment} task={task} visible={isVisible} onTaskSaved={onTaskSaved} onTaskDeleted={onTaskDeleted} toggle={toggleFn} />);144 await updateWrapper(modalEditTask);145 const deleteButton = modalEditTask.find('ModalFooter').find('Button').at(2);146 deleteButton.simulate('click');147 await updateWrapper(modalEditTask);148 const confirmationModal = modalEditTask.find('ModalYesNoConfirmation');149 const yesButton = confirmationModal.find('ActionButton');150 // Act151 yesButton.simulate('click');152 await updateWrapper(modalEditTask);153 // Assert154 expect(taskProxy.deleteTask).toBeCalledTimes(1);155 expect(onTaskDeleted).toBeCalledTimes(1);156 expect(toggleFn).toBeCalledTimes(1);157 expect(modalEditTask.find('ModalYesNoConfirmation').props().visible).toBe(false);158 });159 it('Clicking No on the confirmation should not call the entryProxy.delete function but just close the confirmation modal', async () => {160 // Arrange161 taskProxy.existTask.mockImplementation(async () => Promise.resolve(true));162 jest.spyOn(taskProxy, 'deleteTask');163 const onTaskSaved = jest.fn();164 const onTaskDeleted = jest.fn();165 let isVisible = true;166 const toggleFn = jest.fn().mockImplementation(() => {167 isVisible = !isVisible;168 });169 const modalEditTask = mount(<ModalEditTask equipment={equipment} task={task} visible={isVisible} onTaskSaved={onTaskSaved} onTaskDeleted={onTaskDeleted} toggle={toggleFn} />);170 await updateWrapper(modalEditTask);171 const deleteButton = modalEditTask.find('ModalFooter').find('Button').at(2);172 deleteButton.simulate('click');173 await updateWrapper(modalEditTask);174 const confirmationModal = modalEditTask.find('ModalYesNoConfirmation');175 const noButton = confirmationModal.find('Button').at(1);176 // Act177 noButton.simulate('click');178 await updateWrapper(modalEditTask);179 // Assert180 expect(taskProxy.deleteTask).toBeCalledTimes(0);181 expect(onTaskDeleted).toBeCalledTimes(0);182 expect(toggleFn).toBeCalledTimes(0);183 expect(modalEditTask.find('ModalYesNoConfirmation').props().visible).toBe(false);184 });...
ModalPasswordReset.test.js
Source:ModalPasswordReset.test.js
...23 // Arrange24 const toggle = jest.fn();25 // Act26 const modalPasswordReset = mount(<ModalPasswordReset visible toggle={toggle} data={data} />);27 await updateWrapper(modalPasswordReset);28 // Assert29 expect(modalPasswordReset).toMatchSnapshot();30 expect(modalPasswordReset.find('ModalFooter').find('Button').length).toBe(2);31 const alerts = modalPasswordReset.find('Alerts');32 expect(alerts.length).toBe(0);33 });34 it('should close the modal if the user click Cancel', async () => {35 // Arrange36 const toggle = jest.fn();37 const modalPasswordReset = mount(<ModalPasswordReset visible toggle={toggle} data={data} />);38 await updateWrapper(modalPasswordReset);39 const cancelButton = modalPasswordReset.find('ModalFooter').find('Button').at(1);40 // Act41 cancelButton.simulate('click');42 await updateWrapper(modalPasswordReset);43 // Assert44 expect(modalPasswordReset.find('ModalFooter').find('Button').length).toBe(2);45 const alerts = modalPasswordReset.find('Alerts');46 expect(alerts.length).toBe(0);47 expect(toggle).toBeCalledTimes(1);48 });49 it('should call resetPassword with all the data input when the user click on reset Password, then the modal should close if the user click the Close button', async () => {50 // Arrange51 const toggle = jest.fn();52 jest.spyOn(userProxy, 'resetPassword').mockImplementation(() => Promise.resolve());53 const modalPasswordReset = mount(<ModalPasswordReset visible toggle={toggle} data={data} />);54 await updateWrapper(modalPasswordReset);55 const myForm = modalPasswordReset.find('Memo(MyForm)');56 const inputs = myForm.find('input');57 inputs.at(0).simulate('change', { target: { value: data.email } });58 inputs.at(1).simulate('change', { target: { value: 'password1' } });59 inputs.at(2).simulate('change', { target: { value: 'password1' } });60 await updateWrapper(modalPasswordReset);61 // Act62 modalPasswordReset.find('Memo(MyForm)').simulate('submit');63 await updateWrapper(modalPasswordReset);64 // Assert65 expect(modalPasswordReset.find('ModalFooter').find('Button').length).toBe(1);66 const alerts = modalPasswordReset.find('Alerts');67 expect(alerts.length).toBe(1);68 expect(alerts.props()).toEqual({ error: 'confirmPasswordChange', color: 'success' });69 expect(toggle).toBeCalledTimes(0);70 expect(userProxy.resetPassword).toBeCalledTimes(1);71 expect(userProxy.resetPassword.mock.calls[0][0]).toEqual(data.email);72 expect(userProxy.resetPassword.mock.calls[0][1]).toEqual('password1');73 // Act74 modalPasswordReset.find('Memo(MyForm)').simulate('submit');75 await updateWrapper(modalPasswordReset);76 // Assert77 expect(toggle).toBeCalledTimes(1);78 });79 it('should display an error if the 2 passwords are not the same', async () => {80 // Arrange81 const toggle = jest.fn();82 jest.spyOn(userProxy, 'resetPassword').mockImplementation(() => Promise.resolve());83 const modalPasswordReset = mount(<ModalPasswordReset visible toggle={toggle} data={data} />);84 await updateWrapper(modalPasswordReset);85 const myForm = modalPasswordReset.find('Memo(MyForm)');86 const inputs = myForm.find('input');87 inputs.at(0).simulate('change', { target: { value: data.email } });88 inputs.at(1).simulate('change', { target: { value: 'password1' } });89 inputs.at(2).simulate('change', { target: { value: 'password2' } });90 await updateWrapper(modalPasswordReset);91 // Act92 modalPasswordReset.find('Memo(MyForm)').simulate('submit');93 await updateWrapper(modalPasswordReset);94 // Assert95 expect(modalPasswordReset.find('ModalFooter').find('Button').length).toBe(2);96 const alerts = modalPasswordReset.find('Alerts');97 expect(alerts.length).toBe(1);98 expect(alerts.props()).toEqual({ errors: { password: 'passwordsHaveToBeIdentical' } });99 expect(toggle).toBeCalledTimes(0);100 expect(userProxy.resetPassword).toBeCalledTimes(0);101 });102 it('should display an error message if an error occurs during the password reset', async () => {103 // Arrange104 const toggle = jest.fn();105 jest.spyOn(userProxy, 'resetPassword').mockImplementation(() => Promise.reject(new HttpError({ error: 'network error' })));106 const modalPasswordReset = mount(<ModalPasswordReset visible toggle={toggle} data={data} />);107 await updateWrapper(modalPasswordReset);108 const myForm = modalPasswordReset.find('Memo(MyForm)');109 const inputs = myForm.find('input');110 inputs.at(0).simulate('change', { target: { value: data.email } });111 inputs.at(1).simulate('change', { target: { value: 'password1' } });112 inputs.at(2).simulate('change', { target: { value: 'password1' } });113 await updateWrapper(modalPasswordReset);114 // Act115 modalPasswordReset.find('Memo(MyForm)').simulate('submit');116 await updateWrapper(modalPasswordReset);117 // Assert118 expect(modalPasswordReset.find('ModalFooter').find('Button').length).toBe(2);119 const alerts = modalPasswordReset.find('Alerts');120 expect(alerts.length).toBe(1);121 expect(alerts.props()).toEqual({ errors: { error: 'network error' } });122 expect(toggle).toBeCalledTimes(0);123 expect(userProxy.resetPassword).toBeCalledTimes(1);124 expect(userProxy.resetPassword.mock.calls[0][0]).toEqual(data.email);125 expect(userProxy.resetPassword.mock.calls[0][1]).toEqual('password1');126 });...
ModalSignup.test.js
Source:ModalSignup.test.js
...40 uuidv4.mockImplementation(() => 'user_01');41 const toggle = jest.fn();42 // Act43 const modalSignup = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><ModalSignup visible toggle={toggle} /></IntlProvider>);44 await updateWrapper(modalSignup);45 // Assert46 expect(modalSignup).toMatchSnapshot();47 expect(modalSignup.find('ModalFooter').find('Button').length).toBe(2);48 const alerts = modalSignup.find('Alerts');49 expect(alerts.length).toBe(0);50 });51 it('should close the modal if the user click Cancel', async () => {52 // Arrange53 uuidv4.mockImplementation(() => 'user_01');54 const toggle = jest.fn();55 const modalSignup = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><ModalSignup visible toggle={toggle} /></IntlProvider>);56 await updateWrapper(modalSignup);57 const cancelButton = modalSignup.find('ModalFooter').find('Button').at(1);58 // Act59 cancelButton.simulate('click');60 await updateWrapper(modalSignup);61 // Assert62 expect(modalSignup.find('ModalFooter').find('Button').length).toBe(2);63 const alerts = modalSignup.find('Alerts');64 expect(alerts.length).toBe(0);65 expect(toggle).toBeCalledTimes(1);66 });67 it('should call signup with all the data input when the user click on signup', async () => {68 // Arrange69 uuidv4.mockImplementation(() => user._uiId);70 const toggle = jest.fn();71 jest.spyOn(userProxy, 'signup').mockImplementation(() => Promise.resolve());72 const modalSignup = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><ModalSignup visible toggle={toggle} /></IntlProvider>);73 await updateWrapper(modalSignup);74 const myForm = modalSignup.find('Memo(MyForm)');75 const inputs = myForm.find('input');76 inputs.at(0).simulate('change', { target: { value: user.name } });77 inputs.at(1).simulate('change', { target: { value: user.firstname } });78 inputs.at(2).simulate('change', { target: { value: user.email } });79 inputs.at(3).simulate('change', { target: { value: user.password } });80 inputs.at(4).simulate('change', { target: { checked: user.privacyPolicyAccepted } });81 await updateWrapper(modalSignup);82 // Act83 modalSignup.find('Memo(MyForm)').simulate('submit');84 await updateWrapper(modalSignup);85 // Assert86 expect(modalSignup.find('ModalFooter').find('Button').length).toBe(2);87 const alerts = modalSignup.find('Alerts');88 expect(alerts.length).toBe(1);89 expect(alerts.props()).toEqual({ error: 'emailSent', color: 'success' });90 expect(toggle).toBeCalledTimes(0);91 expect(userProxy.signup).toBeCalledTimes(1);92 expect(userProxy.signup.mock.calls[0][0]).toEqual(user);93 });94 it('should display an error if an error occurs during signup', async () => {95 // Arrange96 uuidv4.mockImplementation(() => user._uiId);97 const toggle = jest.fn();98 jest.spyOn(userProxy, 'signup').mockImplementation(() => Promise.reject(new HttpError({ email: 'alreadyexisting' })));99 const modalSignup = mount(<IntlProvider locale="en-US" timeZone="Asia/Kuala_Lumpur"><ModalSignup visible toggle={toggle} /></IntlProvider>);100 await updateWrapper(modalSignup);101 const myForm = modalSignup.find('Memo(MyForm)');102 const inputs = myForm.find('input');103 inputs.at(0).simulate('change', { target: { value: user.name } });104 inputs.at(1).simulate('change', { target: { value: user.firstname } });105 inputs.at(2).simulate('change', { target: { value: user.email } });106 inputs.at(3).simulate('change', { target: { value: user.password } });107 inputs.at(4).simulate('change', { target: { checked: user.privacyPolicyAccepted } });108 await updateWrapper(modalSignup);109 // Act110 modalSignup.find('Memo(MyForm)').simulate('submit');111 await updateWrapper(modalSignup);112 // Assert113 expect(modalSignup.find('ModalFooter').find('Button').length).toBe(2);114 const alerts = modalSignup.find('Alerts');115 expect(alerts.length).toBe(1);116 expect(alerts.props()).toEqual({ errors: { email: 'alreadyexisting' } });117 expect(toggle).toBeCalledTimes(0);118 expect(userProxy.signup).toBeCalledTimes(1);119 expect(userProxy.signup.mock.calls[0][0]).toEqual(user);120 });...
MailHover.spec.js
Source:MailHover.spec.js
...28 });29 }30 beforeEach(()=>{31 moxios.install();32 updateWrapper()33 });34 afterEach(() => {35 moxios.uninstall()36 })37 it('is a vue instance',()=>{38 expect(wrapper.isVueInstance()).toBeTruthy();39 });40 it('calls `popOver` method on mouseeneter event',() => {41 updateWrapper()42 wrapper.vm.popOver =jest.fn()43 wrapper.find('#main').trigger('mouseenter')44 expect(wrapper.vm.popOver).toHaveBeenCalled()45 });46 it('calls `popOver` method on mouseleave event',() => {47 updateWrapper()48 wrapper.vm.popOver =jest.fn()49 wrapper.find('#main').trigger('mouseleave')50 expect(wrapper.vm.popOver).toHaveBeenCalled()51 });52 it('calls `popOver` method with number on `mouseenter` event',()=>{53 updateWrapper()54 wrapper.setProps({data:{id:12}})55 wrapper.vm.popOver =jest.fn()56 wrapper.find('#main').trigger('mouseenter')57 expect(wrapper.vm.popOver).toHaveBeenCalledWith(12)58 });59 it('calls `popOver` method with `null` value on `mouseleave` event',()=>{60 updateWrapper()61 wrapper.setProps({data:{id:12}})62 wrapper.vm.popOver =jest.fn()63 wrapper.find('#main').trigger('mouseleave')64 expect(wrapper.vm.popOver).toHaveBeenCalledWith(null)65 });66 it('calls `getData` method when click on `reciever_mail` value',() => {67 updateWrapper()68 wrapper.vm.getData =jest.fn()69 wrapper.find('#action_mail').trigger('click')70 expect(wrapper.vm.getData).toHaveBeenCalled()71 });72 it('calls `getData` method with correct value',() => {73 updateWrapper()74 wrapper.setProps({data:{id:12,reciever_mail:'test@gmail.com'}})75 wrapper.vm.getData =jest.fn()76 wrapper.find('#action_mail').trigger('click')77 expect(wrapper.vm.getData).toHaveBeenCalledWith('test@gmail.com',12)78 });79 it('show `popover` when ids are matching',() => {80 updateWrapper()81 wrapper.setProps({data:{id:12,reciever_mail:'test@gmail.com'}})82 wrapper.setData({popId : 12})83 expect(wrapper.find('popover-stub').exists()).toBe(true)84 });85 it('does not show `popover` when ids are not matching',() => {86 updateWrapper()87 wrapper.setProps({data:{id:12,reciever_mail:'test@gmail.com'}})88 wrapper.setData({popId : 10})89 expect(wrapper.find('popover-stub').exists()).toBe(false)90 });91 it('makes an API call when `getData` method called', (done) => {92 updateWrapper();93 wrapper.setProps({data:{id:12,reciever_mail:'test@gmail.com'}})94 wrapper.vm.getData('test@gmail.com',12);95 setTimeout(()=>{96 expect(moxios.requests.__items.length).toBe(1)97 expect(moxios.requests.mostRecent().url).toBe('/api/get-user-by-email?email=test@gmail.com')98 done();99 },50)100 });101 it('shows `loader` if loading is true, `popId` and `data.id` are equal ',()=>{102 updateWrapper();103 wrapper.setProps({data:{id:12,reciever_mail:'test@gmail.com'}})104 wrapper.setData({popId : 12})105 wrapper.vm.loading = true;106 expect(wrapper.find('loader-stub').exists()).toBe(true)107 });108 it('does not show `loader` if loading is true, `popId` and `data.id` are not equal ',()=>{109 updateWrapper();110 wrapper.setProps({data:{id:12,reciever_mail:'test@gmail.com'}})111 wrapper.setData({popId : 10})112 wrapper.vm.loading = true;113 expect(wrapper.find('loader-stub').exists()).toBe(false)114 });...
LocationCreateEdit.spec.js
Source:LocationCreateEdit.spec.js
...20 }21 22 beforeEach(() => {23 24 updateWrapper();25 moxios.install();26 })27 afterEach(() => {28 29 moxios.uninstall()30 })31 it('makes an API call', (done) => {32 33 updateWrapper();34 35 wrapper.vm.getInitialValues(1);36 37 stubRequest();38 39 setTimeout(()=>{40 41 expect(moxios.requests.mostRecent().url).toBe('/api/location/1')42 done();43 44 },50)45 });46 it('makes `loading` false when `getInitialValues` method return error', (done) => {47 48 updateWrapper();49 wrapper.vm.getInitialValues(1);50 51 stubRequest(400);52 53 setTimeout(()=>{54 55 expect(wrapper.vm.loading).toEqual(false);56 57 done();58 59 },50)60 })61 it('updates `name` of the label when onChange method is called with suitable parameters',()=>{62 wrapper.vm.onChange('test', 'title');63 expect(wrapper.vm.title).toBe('test');64 })65 it('makes an AJAX call when onSubmit method is called',(done)=>{66 updateWrapper()67 wrapper.setData({ loading : false, hasDataPopulated : true})68 wrapper.vm.isValid = () =>{return true}69 wrapper.vm.onSubmit()70 expect(wrapper.vm.loading).toBe(true)71 mockSubmitRequest();72 setTimeout(()=>{73 expect(moxios.requests.mostRecent().url).toBe('/api/location')74 expect(wrapper.vm.loading).toBe(false)75 done();76 },1);77 });78 it('makes an loading as false when onSubmit method return error',(done)=>{79 updateWrapper()80 wrapper.setData({ loading : false, hasDataPopulated : true,location_id : 1})81 wrapper.vm.isValid = () =>{return true}82 wrapper.vm.onSubmit()83 mockSubmitRequest(400);84 setTimeout(()=>{85 expect(wrapper.vm.loading).toBe(false)86 done();87 },1);88 });89 it("updates `title value when page is in edit`",()=>{90 91 updateWrapper()92 wrapper.vm.getInitialValues = jest.fn();93 wrapper.vm.getValues('/10/edit');94 expect(wrapper.vm.$data.page_title).toEqual('edit_location');95 expect(wrapper.vm.getInitialValues).toHaveBeenCalled();96 });97 it('call `isValid` method when onSubmit method is called',(done)=>{98 updateWrapper()99 wrapper.setData({ loading : false, hasDataPopulated : true})100 wrapper.vm.isValid =jest.fn() 101 wrapper.vm.onSubmit()102 expect(wrapper.vm.isValid).toHaveBeenCalled()103 104 done();105 });106 it('isValid - should return false ', done => {107 108 validation.validateLocationSettings = () =>{return {errors : [], isValid : false}}109 110 expect(wrapper.vm.isValid()).toBe(false)111 112 done()...
TaskProgressBar.test.js
Source:TaskProgressBar.test.js
...23 total: 0,24 remaining: 0,25 }));26 const syncAlertWrapper = mount(<TaskProgressBar taskWithProgress={syncService} color="warning" title="syncInProgress" />);27 await updateWrapper(syncAlertWrapper);28 // Act29 await syncAlertNotifier({30 isRunning: false,31 total: 5,32 remaining: 5,33 });34 await updateWrapper(syncAlertWrapper);35 // Assert36 const progress = syncAlertWrapper.find('Progress');37 expect(progress.length).toBe(0);38 });39 it('should display the SyncAlert when the synchronisation starts', async () => {40 // Arrange41 let syncAlertNotifier;42 syncService.registerListener.mockImplementation((listener) => {43 syncAlertNotifier = listener;44 });45 syncService.getContext.mockImplementation(() => ({46 isRunning: false,47 total: 0,48 remaining: 0,49 }));50 const syncAlertWrapper = mount(<TaskProgressBar taskWithProgress={syncService} color="warning" title="syncInProgress" />);51 await updateWrapper(syncAlertWrapper);52 // Act53 await syncAlertNotifier({54 isRunning: true,55 total: 5,56 remaining: 5,57 });58 await updateWrapper(syncAlertWrapper);59 // Assert60 const progress = syncAlertWrapper.find('Progress');61 expect(progress.props().value).toBe(100);62 });63 it('should display the progress when the synchronisation is running', async () => {64 // Arrange65 let syncAlertNotifier;66 syncService.registerListener.mockImplementation((listener) => {67 syncAlertNotifier = listener;68 });69 syncService.getContext.mockImplementation(() => ({70 isRunning: false,71 total: 0,72 remaining: 0,73 }));74 const syncAlertWrapper = mount(<TaskProgressBar taskWithProgress={syncService} color="warning" title="syncInProgress" />);75 await updateWrapper(syncAlertWrapper);76 await syncAlertNotifier({77 isRunning: true,78 total: 5,79 remaining: 5,80 });81 await updateWrapper(syncAlertWrapper);82 // Act83 await syncAlertNotifier({84 isRunning: true,85 total: 5,86 remaining: 3,87 });88 await updateWrapper(syncAlertWrapper);89 // Assert90 const progress = syncAlertWrapper.find('Progress');91 expect(progress.props().value).toBe(60);92 });...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.evaluate(() => {7 const input = document.querySelector('input[type="text"]');8 input.value = 'Hello World!';9 window.updateWrapper(input);10 });11 await browser.close();12})();13await page.type(selector, text, options)14const { chromium } = require('playwright');15(async () => {16 const browser = await chromium.launch({ headless: false });17 const context = await browser.newContext();18 const page = await context.newPage();19 await page.type('input[type="text"]', 'Hello World!');
Using AI Code Generation
1const { updateWrapper } = require('playwright/lib/server/wrapper');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const page = await browser.newPage();6 const element = await page.$('h1');7 await updateWrapper(element, {8 attributes: { id: 'test', class: 'test' },9 });10 await browser.close();11})();
Using AI Code Generation
1const { updateWrapper } = require('playwright/lib/internal/frames');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.waitForSelector('text=Get started');8 const elementHandle = await page.$('text=Get started');9 await updateWrapper(elementHandle, (e) => {10 e.style.backgroundColor = 'red';11 });12 await page.screenshot({ path: `example.png` });13 await browser.close();14})();
Using AI Code Generation
1import { chromium } from 'playwright';2import { updateWrapper } from 'playwright/lib/server/dom.js';3(async () => {4 const browser = await chromium.launch({ headless: false });5 const page = await browser.newPage();6 const elementHandle = await page.$('input[name="q"]');7 const wrapper = await elementHandle._element;8 updateWrapper(wrapper, 'value', 'test');9 await page.screenshot({ path: 'example.png' });10 await browser.close();11})();12import { chromium } from 'playwright';13import { updateWrapper } from 'playwright/lib/server/dom.js';14(async () => {15 const browser = await chromium.launch({ headless: false });16 const page = await browser.newPage();17 const elementHandle = await page.$('input[name="q"]');18 const wrapper = await elementHandle._element;19 updateWrapper(wrapper, 'value', 'test');20 await page.screenshot({ path: 'example.png' });21 await browser.close();22})();23import { chromium } from 'playwright';24import { updateWrapper } from 'playwright/lib/server/dom.js';25(async () => {26 const browser = await chromium.launch({ headless: false });27 const page = await browser.newPage();28 const elementHandle = await page.$('input[name="q"]');29 const wrapper = await elementHandle._element;30 updateWrapper(wrapper, 'value', 'test');31 await page.screenshot({ path: 'example.png' });32 await browser.close();33})();34import { chromium } from 'playwright';35import { updateWrapper } from 'playwright/lib/server/dom.js';36(async () => {37 const browser = await chromium.launch({ headless: false });38 const page = await browser.newPage();39 const elementHandle = await page.$('input[name="q"]');40 const wrapper = await elementHandle._element;41 updateWrapper(wrapper, 'value', 'test');
Using AI Code Generation
1const { test, expect } = require('@playwright/test');2test('should update wrapper', async ({ page }) => {3 const wrapper = await page.$('text=Get started');4 await page.updateWrapper(wrapper, 'text=Get started');5 expect(wrapper).toBeTruthy();6});7const context = await browser.newContext();8const page = await context.newPage();9const page2 = await browser.newPage();10await page.bringToFront();11await context.close();12const context = await browser.newContext({13 viewport: { width: 1280, height: 720 },14 userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',15});16const page = await context.newPage();17const page2 = await browser.newPage();
Using AI Code Generation
1const { updateWrapper } = require('@playwright/test/lib/test');2const { test } = require('@playwright/test');3test('update wrapper test', async ({ page }) => {4 await updateWrapper(page, { title: 'updated title' });5 expect(page.title()).toBe('updated title');6});7 ✓ update wrapper test (1ms)8 1 passed (2ms)
Using AI Code Generation
1const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');2const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');3const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');4const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');5const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');6const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');7const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');8const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');9const { updateWrapper } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!