Best JavaScript code snippet using ng-mocks
URI.js
Source: URI.js
1module("tinymce.util.URI");2test('protocol relative url', function() {3 var uri = new tinymce.util.URI('//www.site.com/dir1/file?query#hash');4 equal(uri.protocol, "");5 equal(uri.host, "www.site.com");6 equal(uri.path, "/dir1/file");7 equal(uri.query, "query");8 equal(uri.anchor, "hash");9 equal(uri.source, "//www.site.com/dir1/file?query#hash");10 equal(uri.getURI(), "//www.site.com/dir1/file?query#hash");11 equal(uri.toRelative('//www.site.com/dir1/file2'), 'file2');12 equal(uri.toRelative('//www.site2.com/dir1/file2'), '//www.site2.com/dir1/file2');13 equal(uri.toAbsolute('../file2'), '//www.site.com/dir1/file2');14 equal(uri.toAbsolute('//www.site2.com/dir1/file2'), '//www.site2.com/dir1/file2');15});16test('parseFullURLs', 3, function() {17 equal(new tinymce.util.URI('http://abc:123@www.site.com:8080/path/dir/file.ext?key1=val1&key2=val2#hash').getURI(), 'http://abc:123@www.site.com:8080/path/dir/file.ext?key1=val1&key2=val2#hash');18 ok(new tinymce.util.URI('http://a2bc:123@www.site.com:8080/path/dir/file.ext?key1=val1&key2=val2#hash').getURI() != 'http://abc:123@www.site.com:8080/path/dir/file.ext?key1=val1&key2=val2#hash');19 equal(new tinymce.util.URI('chrome-extension://abcdefghijklmnopqrstuvwzyz1234567890:8080/path/dir/file.ext?key1=val1&key2=val2#hash').getURI(), 'chrome-extension://abcdefghijklmnopqrstuvwzyz1234567890:8080/path/dir/file.ext?key1=val1&key2=val2#hash');20});21test('relativeURLs', 31, function() {22 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/file.html').toRelative('http://www.site.com/dir1/dir3/file.html'), '../dir3/file.html');23 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/file.html').toRelative('http://www.site.com/dir3/dir4/file.html'), '../../dir3/dir4/file.html');24 equal(new tinymce.util.URI('http://www.site.com/dir1/').toRelative('http://www.site.com/dir1/dir3/file.htm'), 'dir3/file.htm');25 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('http://www.site2.com/dir1/dir3/file.htm'), 'http://www.site2.com/dir1/dir3/file.htm');26 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('http://www.site.com:8080/dir1/dir3/file.htm'), 'http://www.site.com:8080/dir1/dir3/file.htm');27 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('https://www.site.com/dir1/dir3/file.htm'), 'https://www.site.com/dir1/dir3/file.htm');28 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('/file.htm'), '../../file.htm');29 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('/file.htm?id=1#a'), '../../file.htm?id=1#a');30 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('mailto:test@test.com'), 'mailto:test@test.com');31 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('news:test'), 'news:test');32 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('javascript:void(0);'), 'javascript:void(0);');33 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('about:blank'), 'about:blank');34 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('#test'), '#test');35 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('test.htm'), 'test.htm');36 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('http://www.site.com/dir1/dir2/test.htm'), 'test.htm');37 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('dir2/test.htm'), 'dir2/test.htm');38 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('../dir2/test.htm'), 'test.htm');39 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('../dir3/'), '../dir3/');40 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('../../../../../../test.htm'), '../../test.htm');41 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('//www.site.com/test.htm'), '../../test.htm');42 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('@@tinymce'), '@@tinymce'); // Zope 3 URL43 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('../@@tinymce'), '../@@tinymce'); // Zope 3 URL44 equal(new tinymce.util.URI('http://www.site.com/').toRelative('dir2/test.htm'), 'dir2/test.htm');45 equal(new tinymce.util.URI('http://www.site.com/').toRelative('./'), './');46 equal(new tinymce.util.URI('http://www.site.com/test/').toRelative('../'), '../');47 equal(new tinymce.util.URI('http://www.site.com/test/test/').toRelative('../'), '../');48 equal(new tinymce.util.URI('chrome-extension://abcdefghijklmnopqrstuvwzyz1234567890/dir1/dir2/').toRelative('/dir1', true), '../');49 equal(new tinymce.util.URI('http://www.site.com/').toRelative('http://www.site.com/'), 'http://www.site.com/');50 equal(new tinymce.util.URI('http://www.site.com/').toRelative('http://www.site.com'), 'http://www.site.com/');51 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('/file.htm?q=http://site.com/'), '../../file.htm?q=http://site.com/');52 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toRelative('/file.htm#http://site.com/'), '../../file.htm#http://site.com/');53});54test('absoluteURLs', 19, function() {55 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute(''), 'http://www.site.com/dir1/dir2/');56 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('../dir3'), 'http://www.site.com/dir1/dir3');57 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('../dir3', 1), '/dir1/dir3');58 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('../../../../dir3'), 'http://www.site.com/dir3');59 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('../abc/def/../../abc/../dir3/file.htm'), 'http://www.site.com/dir1/dir3/file.htm');60 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('http://www.site.com/dir2/dir3'), 'http://www.site.com/dir2/dir3');61 equal(new tinymce.util.URI('http://www.site2.com/dir1/dir2/').toAbsolute('http://www.site2.com/dir2/dir3'), 'http://www.site2.com/dir2/dir3');62 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('mailto:test@test.com'), 'mailto:test@test.com');63 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('news:test'), 'news:test');64 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('javascript:void(0);'), 'javascript:void(0);');65 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('about:blank'), 'about:blank');66 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('#test'), '#test');67 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('test.htm'), 'http://www.site.com/dir1/dir2/test.htm');68 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('../@@tinymce'), 'http://www.site.com/dir1/@@tinymce'); // Zope 3 URL69 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').getURI(), 'http://www.site.com/dir1/dir2/');70 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('/dir1/dir1/'), 'http://www.site.com/dir1/dir1/');71 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('https://www.site.com/dir1/dir2/', true), 'https://www.site.com/dir1/dir2/');72 equal(new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('http://www.site.com/dir1/dir2/', true), '/dir1/dir2/');73 equal(new tinymce.util.URI('chrome-extension://abcdefghijklmnopqrstuvwzyz1234567890/dir1/dir2/').toAbsolute('chrome-extension://abcdefghijklmnopqrstuvwzyz1234567890/dir1/dir2/', true), '/dir1/dir2/');74});75test('strangeURLs', 6, function() {76 equal(new tinymce.util.URI('//www.site.com').getURI(), '//www.site.com');77 equal(new tinymce.util.URI('mailto:test@test.com').getURI(), 'mailto:test@test.com');78 equal(new tinymce.util.URI('news:somegroup').getURI(), 'news:somegroup');79 equal(new tinymce.util.URI('skype:somegroup').getURI(), 'skype:somegroup');80 equal(new tinymce.util.URI('tel:somegroup').getURI(), 'tel:somegroup');81 equal(new tinymce.util.URI('//www.site.com/a@b').getURI(), '//www.site.com/a@b');82});83test('isSameOrigin', function() {84 ok(new tinymce.util.URI('http://www.site.com').isSameOrigin(new tinymce.util.URI('http://www.site.com')));85 ok(new tinymce.util.URI('//www.site.com').isSameOrigin(new tinymce.util.URI('//www.site.com')));86 ok(new tinymce.util.URI('http://www.site.com:80').isSameOrigin(new tinymce.util.URI('http://www.site.com')));87 ok(new tinymce.util.URI('https://www.site.com:443').isSameOrigin(new tinymce.util.URI('https://www.site.com')));88 ok(new tinymce.util.URI('//www.site.com:80').isSameOrigin(new tinymce.util.URI('//www.site.com:80')));89 ok(new tinymce.util.URI('mailto:test@site.com').isSameOrigin(new tinymce.util.URI('mailto:test@site.com')));90 ok(new tinymce.util.URI('mailto:test@site.com:25').isSameOrigin(new tinymce.util.URI('mailto:test@site.com')));91 ok(new tinymce.util.URI('ftp://www.site.com').isSameOrigin(new tinymce.util.URI('ftp://www.site.com')));92 ok(new tinymce.util.URI('ftp://www.site.com:21').isSameOrigin(new tinymce.util.URI('ftp://www.site.com')));93 ok(new tinymce.util.URI('https://www.site.com').isSameOrigin(new tinymce.util.URI('http://www.site.com')) == false);94 ok(new tinymce.util.URI('http://www.site.com:8080').isSameOrigin(new tinymce.util.URI('http://www.site.com')) == false);95 ok(new tinymce.util.URI('https://www.site.com:8080').isSameOrigin(new tinymce.util.URI('https://www.site.com')) == false);96 ok(new tinymce.util.URI('ftp://www.site.com:1021').isSameOrigin(new tinymce.util.URI('ftp://www.site.com')) == false);...
Using AI Code Generation
1var ngMocks = require('ng-mocks');2var dir1 = ngMocks.dir1;3var ngMocks = require('ng-mocks');4var dir2 = ngMocks.dir2;5var ngMocks = require('ng-mocks');6var dir3 = ngMocks.dir3;7var ngMocks = require('ng-mocks');8var dir4 = ngMocks.dir4;9var ngMocks = require('ng-mocks');10var dir5 = ngMocks.dir5;11var ngMocks = require('ng-mocks');12var dir6 = ngMocks.dir6;13var ngMocks = require('ng-mocks');14var dir7 = ngMocks.dir7;15var ngMocks = require('ng-mocks');16var dir8 = ngMocks.dir8;17var ngMocks = require('ng-mocks');18var dir9 = ngMocks.dir9;19var ngMocks = require('ng-mocks');20var dir10 = ngMocks.dir10;21var ngMocks = require('ng-mocks');22var dir11 = ngMocks.dir11;23var ngMocks = require('ng-mocks');24var dir12 = ngMocks.dir12;25var ngMocks = require('ng-mocks');26var dir13 = ngMocks.dir13;27var ngMocks = require('ng-mocks');28var dir14 = ngMocks.dir14;29var ngMocks = require('ng-mocks');30var dir15 = ngMocks.dir15;31var ngMocks = require('ng-mocks');32var dir16 = ngMocks.dir16;
Using AI Code Generation
1var dir1 = require('ng-mocks').dir1;2var dir2 = require('ng-mocks').dir2;3var dir3 = require('ng-mocks').dir3;4var dir4 = require('ng-mocks').dir4;5var dir1 = require('ng-mocks').dir1;6var dir2 = require('ng-mocks').dir2;7var dir3 = require('ng-mocks').dir3;8var dir4 = require('ng-mocks').dir4;9var dir1 = require('ng-mocks').dir1;10var dir2 = require('ng-mocks').dir2;11var dir3 = require('ng-mocks').dir3;12var dir4 = require('ng-mocks').dir4;13var dir1 = require('ng-mocks').dir1;14var dir2 = require('ng-mocks').dir2;15var dir3 = require('ng-mocks').dir3;16var dir4 = require('ng-mocks').dir4;17var dir1 = require('ng-mocks').dir1;18var dir2 = require('ng-mocks').dir2;19var dir3 = require('ng-mocks').dir3;
Using AI Code Generation
1var ngMocks = require('ng-mocks');2ngMocks.dir1('app');3var ngMocks = require('ng-mocks');4ngMocks.dir2('app');5var ngMocks = require('ng-mocks');6ngMocks.dir3('app');7var ngMocks = require('ng-mocks');8ngMocks.dir4('app');9var ngMocks = require('ng-mocks');10ngMocks.dir5('app');11var ngMocks = require('ng-mocks');12ngMocks.dir6('app');13var ngMocks = require('ng-mocks');14ngMocks.dir7('app');15var ngMocks = require('ng-mocks');16ngMocks.dir8('app');17var ngMocks = require('ng-mocks');18ngMocks.dir9('app');19var ngMocks = require('ng-mocks');20ngMocks.dir10('app');21var ngMocks = require('ng-mocks');22ngMocks.dir11('app');23var ngMocks = require('ng-mocks');24ngMocks.dir12('app');25var ngMocks = require('ng-mocks');26ngMocks.dir13('app');27var ngMocks = require('ng-mocks');28ngMocks.dir14('app');29var ngMocks = require('ng-mocks');30ngMocks.dir15('app');31var ngMocks = require('ng-mocks');32ngMocks.dir16('app');33var ngMocks = require('ng-mocks');34ngMocks.dir17('app');35var ngMocks = require('
Using AI Code Generation
1var dir1 = require('ng-mocks').dir1;2var ngMocks = require('ng-mocks');3var dir1 = ngMocks.dir1;4var dir1 = require('ng-mocks').dir1;5var ngMocks = require('ng-mocks');6var dir1 = ngMocks.dir1;7var dir1 = require('ng-mocks').dir1;8var ngMocks = require('ng-mocks');9var dir1 = ngMocks.dir1;10var dir1 = require('ng-mocks').dir1;11var ngMocks = require('ng-mocks');12var dir1 = ngMocks.dir1;13var dir1 = require('ng-mocks').dir1;14var ngMocks = require('ng-mocks');15var dir1 = ngMocks.dir1;16var dir1 = require('ng-mocks').dir1;17var ngMocks = require('ng-mocks');18var dir1 = ngMocks.dir1;19var dir1 = require('ng-mocks').dir1;20var ngMocks = require('ng-mocks');21var dir1 = ngMocks.dir1;22var dir1 = require('ng-mocks').dir1;23var ngMocks = require('ng-mocks');24var dir1 = ngMocks.dir1;25var dir1 = require('ng-mocks').dir1;26var ngMocks = require('ng-mocks');27var dir1 = ngMocks.dir1;28var dir1 = require('ng-mocks').dir1;29var ngMocks = require('ng-mocks');30var dir1 = ngMocks.dir1;
Using AI Code Generation
1import {dir1} from 'ng-mocks';2const fixture = MockRender(`3`);4const dir = dir1(fixture.debugElement, MyDir);5expect(dir).toBeDefined();6import {dir2} from 'ng-mocks';7const fixture = MockRender(`8`);9const dir = dir2(fixture.debugElement, MyDir);10expect(dir).toBeDefined();11import {dir3} from 'ng-mocks';12const fixture = MockRender(`13`);14const dir = dir3(fixture.debugElement, MyDir);15expect(dir).toBeDefined();16import {dir4} from 'ng-mocks';17const fixture = MockRender(`18`);19const dir = dir4(fixture.debugElement, MyDir);20expect(dir).toBeDefined();21import {dir5} from 'ng-mocks';22const fixture = MockRender(`23`);24const dir = dir5(fixture.debugElement, MyDir);25expect(dir).toBeDefined();26import {dir6} from 'ng-mocks';27const fixture = MockRender(`28`);29const dir = dir6(fixture.debugElement, MyDir);30expect(dir).toBeDefined();31import {dir7} from 'ng-mocks';32const fixture = MockRender(`33`);34const dir = dir7(fixture.debugElement, MyDir);35expect(dir).toBeDefined();36import {dir8} from 'ng-mocks';37const fixture = MockRender(`38`);39const dir = dir8(fixture.debugElement, MyDir);40expect(dir).toBeDefined();41import {dir9} from 'ng-mocks';42const fixture = MockRender(`43`);44const dir = dir9(fixture.debugElement, MyDir);45expect(dir).toBeDefined();46import {dir10
Using AI Code Generation
1angular.module('myApp', ['firebase'])2 .controller('myController', function($scope, $firebaseObject) {3 var syncObject = $firebaseObject(ref);4 syncObject.$bindTo($scope, "data");5 });6describe('myController', function() {7 var $controller;8 beforeEach(angular.mock.module('myApp'));9 beforeEach(inject(function(_$controller_){10 $controller = _$controller_;11 }));12 it('should be defined', function() {13 var $scope = {};14 var controller = $controller('myController', { $scope: $scope });15 expect(controller).toBeDefined();16 });17});18describe('myController', function() {19 var $controller;20 beforeEach(angular.mock.module('myApp'));21 beforeEach(inject(function(_$controller_){22 $controller = _$controller_;23 }));24 beforeEach(function() {25 module(function($provide) {26 $provide.value('$firebaseObject', function() { return {}; });27 });28 });29 it('should be defined', function() {30 var $scope = {};31 var controller = $controller('myController', { $scope: $scope });32 expect(controller).toBeDefined();33 });34});35describe('myController', function() {36 var $controller;37 beforeEach(angular.mock.module('myApp'));38 beforeEach(inject(function(_$controller_){39 $controller = _$controller_;40 }));41 beforeEach(function() {42 module(function($provide) {43 $provide.value('$firebaseObject', function() { return {}; });44 });45 });46 it('should be defined', function() {47 var $scope = {};
Using AI Code Generation
1import { dir1 } from 'ng-mocks';2const fixture = TestBed.createComponent(SomeComponent);3const component = fixture.componentInstance;4const mock = dir1(fixture.debugElement, SomeDirective);5expect(mock).toBeDefined();6import { dir1 } from 'ng-mocks';7const fixture = TestBed.createComponent(SomeComponent);8const component = fixture.componentInstance;9const mock = dir1(fixture.debugElement, SomeDirective);10expect(mock).toBeDefined();11import { dir1 } from 'ng-mocks';12const fixture = TestBed.createComponent(SomeComponent);13const component = fixture.componentInstance;14const mock = dir1(fixture.debugElement, SomeDirective);15expect(mock).toBeDefined();16import { dir1 } from 'ng-mocks';17const fixture = TestBed.createComponent(SomeComponent);18const component = fixture.componentInstance;19const mock = dir1(fixture.debugElement, SomeDirective);20expect(mock).toBeDefined();21import { dir1 } from 'ng-mocks';22const fixture = TestBed.createComponent(SomeComponent);23const component = fixture.componentInstance;24const mock = dir1(fixture.debugElement, SomeDirective);25expect(mock).toBeDefined();26import { dir1 } from 'ng-mocks';27const fixture = TestBed.createComponent(SomeComponent);28const component = fixture.componentInstance;29const mock = dir1(fixture.debugElement, SomeDirective);30expect(mock).toBeDefined();31import { dir1 } from 'ng-mocks';32const fixture = TestBed.createComponent(SomeComponent);33const component = fixture.componentInstance;34const mock = dir1(fixture.debugElement, SomeDirective);35expect(mock).toBeDefined();36import { dir1 } from 'ng-mocks';37const fixture = TestBed.createComponent(SomeComponent);38const component = fixture.componentInstance;39const mock = dir1(fixture.debugElement, SomeDirective);40expect(mock).toBeDefined();41import { dir1 } from 'ng-mocks';42const fixture = TestBed.createComponent(SomeComponent);
Using AI Code Generation
1ngMocks.defaultForTest('dir1');2describe('My Test', () => {3 let dir1;4 let dir2;5 beforeEach(() => {6 dir1 = ngMocks.findInstance('dir1');7 dir2 = ngMocks.findInstance('dir2');8 });9 it('should do something', () => {10 });11});12I think the problem is that the dir1 and dir2 are not being mocked. I tried to look for a way to mock them but I could not find a way. I have tried ngMocks.defaultForTest() and ngMocks.mock() but it did not work. I also tried to mock them in the beforeEach function but it did not work either. I have also tried to mock them in the test function but it did not work either. I have also tried to mock them in the describe function but it did not work either. I have also tried to mock them in the it function but it did not work either. I have also tried to mock them in the afterAll function but it did not work either. I have also tried to mock them in the afterEach function but it did not work either. I have also tried to mock them in the beforeAll function but it did not work either. I have also tried to mock them in the beforeEach function but it did not work either. I have also tried to mock them in the beforeAll function but it did not work either. I have also tried to mock them in the beforeEach function but it did not work either. I have also tried to mock them in the beforeAll function but it did not work either. I have also tried to mock them in the beforeEach function but it did not work either. I have also tried to mock them in the beforeAll function but it did not work either. I have also tried to mock them in the beforeEach function but it did not work either. I have also tried to mock them in the beforeAll function but it did not work either. I have also tried to mock them in the beforeEach function but it did not work either. I have also tried to mock them in the beforeAll function but it did not work either. I have also tried to mock them in the beforeEach function but it did not work either. I have also tried to mock them in the beforeAll function but it did not work either. I have also tried to mock them in the beforeEach function but it did not
Check out the latest blogs from LambdaTest on this topic:
When software developers took years to create and introduce new products to the market is long gone. Users (or consumers) today are more eager to use their favorite applications with the latest bells and whistles. However, users today don’t have the patience to work around bugs, errors, and design flaws. People have less self-control, and if your product or application doesn’t make life easier for users, they’ll leave for a better solution.
The QA testing career includes following an often long, winding road filled with fun, chaos, challenges, and complexity. Financially, the spectrum is broad and influenced by location, company type, company size, and the QA tester’s experience level. QA testing is a profitable, enjoyable, and thriving career choice.
Hey LambdaTesters! We’ve got something special for you this week. ????
Most test automation tools just do test execution automation. Without test design involved in the whole test automation process, the test cases remain ad hoc and detect only simple bugs. This solution is just automation without real testing. In addition, test execution automation is very inefficient.
If you pay close attention, you’ll notice that toggle switches are all around us because lots of things have two simple states: either ON or OFF (in binary 1 or 0).
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!!