Noutați

JavaScript Client Framework Has A Powerful Data Platform Model

Data and how you handle it is the heart of every application you create, whether it is simple or complex. How you handle your data drives your applications and determines your credibility and success as a business application developer. With such high stakes involved, it is important to recognize data as one of your most valuable development resources and, as such, to handle it with due care and attention inside your applications. Sencha ExtJS is aware of the importance of handling data correctly and has implemented many features to streamline your development and data handling processes. In Sencha ExtJS, the data package loads and saves all of the data in your application. It consists of a multitude of classes that contribute to the way you handle data. In this article, we’ll take a brief tour of ExtJS’s data package and help you better understand its core concepts. What is a model in the data package of a Sencha application? A model is the most important part of a data package. Everything else in your application is connected to and revolves around the model. This makes it the heart of the entire data package. Some of the principal parts of Ext.data.Model include fields, proxies, validations, and associations. A sample ExtJS model is defined in the code snippet below. Ext.define(‘MyApp.model.Base’, { extend: ‘Ext.data.Model’, fields: [{ name: ‘id’, type: ‘int’ }], schema: { namespace: ‘MyApp.model’, // generate auto entityName proxy: { // Ext.util.ObjectTemplate type: ‘ajax’, url: ‘{entityName}.json’, reader: { type: ‘json’, rootProperty: ‘{entityName:lowercase}’ } } } }); How are proxies used in an end-to-end client-server cycle? There are two types of proxies in ExtJS — client and server. The client proxy may include memory and local storage to store the data on the client-side, whereas, the server proxy handles the marshaling of data to a remote server, for instance, Ajax, JSONP, and REST. Generally, these proxies are used by ExtJS models and stores to handle the loading and saving of model data. How can I create a store in ExtJS? A store, in ExtJS, is a collection of records of model instances. When defining a store, you need to define its linked model as well. Following is a simple code that allows you to create a store for User model and load its data using the load() function on Store object. var store = new Ext.data.Store ({ model: ‘MyApp.model.User’ }); store.load({ callback:function(){ var first_name = this.first().get(‘name’); console.log(first_name); } }); One of the fascinating things about a store is that it allows you to define sorting parameters. Based on the sorting and grouping preferences, the store filters and then returns the data. How can I establish associations between models? Models can be linked with each other using associations. In any real-world application, your entities are always linked together. This should be reflected in your model-level structure as well. For instance, your social media application contains a User and Post model. The Post model and its instances have no standalone semantic value. However, if it associates with a User model then it makes real sense. In ExtJS, model associations for this social media example can be defined as follows: Ext.define(‘MyApp.model.User’, { extend: ‘MyApp.model.Base’, fields: [{ name: ‘name’, type: ‘string’ }] }); Ext.define(‘MyApp.model.Post’, { extend: ‘MyApp.model.Base’, fields: [{ name: ‘userId’, reference: ‘User’, // the entityName for MyApp.model.User type: […]

Read More

Made With Delphi: This Brilliant Soccer Strategy Mobile App

The game of soccer is deceptively simple; guide the ball, using only your feet or head, and try to get it into your opponent’s net. Yet that simple set of instructions belies a game of great skill and cunning strategy worthy of any Army general or chess grandmaster. To get that leather sphere pounding in the back of the net requires guile and an understanding of physics and innate geometry combined with hand-to-eye coordination and a substantial level of fitness from the players. It may be called “the beautiful game” but it’s also the fiendishly frustrating game too. A Delphi mobile app for soccer coaches With Soccer Playview coaches and players can view animated plays, drills and practice plans on their cell phone or tablet. Soccer plays, drills and practice plans can be created with the Soccer Playbook program from Jes-Soft, which is free to try and available at http://www.jes-soft.com/soccer/index.html. We’ve featured other apps from Jes-Soft before and how they’ve really put the cross-platform capabilities of RAD Studio Delphi’s FMX FireMonkey framework to excellent use. The app allows users to create strategic ‘plays’ and practice plans on their desktop computers. These can then be saved to a cloud drive such as G-Drive or DropBox. The saved plays can then be opened on the mobile device from those cloud locations. It’s a real shining example of Jes-Soft’s skills but also the true power and overwhelming flexibility of Delphi and FireMonkey. Website Soccer Playview Google Play Soccer Playview Screenshot Gallery RAD Studio is the power behind Jes-Soft’s superb app. It allows them to realize their creativity and bring their app to market, reliably and affordably. Why not download a free trial copy of RAD Studio today and see what it can do for you?

Read More

#WEBWONDERS : Using device tech from your web app

In todays #WEBWONDERS blog, we uncover two new components from the latest TMS WEB Core v1.8.2.0 release that show how easy it is to access device hardware. As a bonus, there is a small free component based on one of these new system functionality components. Speech synthesis To bring your message with an extra touch, you can these days easily take advantage of speech synthesis that is built-in in any modern browser. The browser offers an API for it and a new TMS WEB Core non-visual component makes it extremely easy to use. It is literally not more difficult that dropping the component on the form and call: WebSpeechSynthesis.Speak(‘It cannot be easier to make me speak’); There are some additional settings that let you further customize this. If you do not like the default voice the browser offers, you can change the voice pitch and rate with the WebSpeechSynthesis.Pitch and WebSpeechSynthesis.Rate properties. And there is more, most browsers will offer different voices you can select from. The WebSpeechSynthesis component retrieves the available voices and makes these accessible via the WebSpeechSynthesis.Voices: TStringList property. This holds a descriptor name for the different voices offer and this descriptor name can be set toWebSpeechSynthesis.Voice to select another voice. Of course, you will want to experience this speech synthesis yourself first hand, so head-over to our demo and have fun playing with it or watch a recording Device orientation Most modern smartphones and tables come these days with a built-in device orientation sensor. And the modern browsers running on these devices already offer access to this sensor. So, in the same philosophy where the VCL offers Windows system functionality via components, TMS WEB Core offers browser functionality via easy to use components. The new TWebDeviceOrientation component is extremely simple to use. Drop it on the form, call the WebDeviceConnection.Start method to start retrieving the sensor info and the event OnHeadingChange is triggered whenever the physical orientation of the device changes. It returns in degrees the direction of the device.  Now, we have created a small free component that turns the non-visual device orientation sensor component into a visual compass component. You can use this easily from a TMS WEB Core web client application by including the unit WEBLib.Compass in the uses list and create the component:   compass := TWebCompass.Create(Self);   compass.Parent := Self;   compass.Top := 10;   compass.Left := 10;   compass.OnClick := CompassClick; Here the component is created and from an event handler for clicking the compass, the compass will start to capture the device orientation sensor info: procedure TCompassForm.CompassClick(Sender: TObject); begin if not compass.Started then begin compass.Start; end; end; One important notice: for the device orientation sensor data to be available for your web app, the app needs to be hosted on a HTTPS enabled domain! You can discover this demo from a device with such device orientation sensor here or watch this replay: Free compass component Finally, a small word about the free component to visualize the device orientation info via a compass. This is basically a visual component (so, it descends from TWebCustomControl) that shows a picture of a compass (a default one or a customized one) and internally, a non-visual TWebDeviceOrientation component is created and its OnHeadingChange event is handled by the component. From this event handler, a transform […]

Read More

TMS WEB Core for Visual Studio Code v1.8.2 released!

We are excited to announce the new TMS WEB Core for Visual Studio Code v1.8.2 is released! This new release brings following main new features: Project repository Miletus cross-platform desktop applications Framework sync with TMS WEB Core for Delphi All latest new features, enhancements from TMS WEB Core for Delphi 1.8.2 Project repository From the new project repository, it is possible to select the type of application you want to create from TMS WEB Core for Visual Studio Code. But you can as well create your own project templates and add these to the project repository. The new repository brings a convenient way to manage the many types and your custom project types that TMS WEB Core offers. Miletus cross-platform desktop apps Miletus technology allows you to create cross-platform single executable desktop applications for Windows, macOS and Linux based on web technology. This means highly reusable code, access to a wide range of existing web libraries and taking advantage of the rich rendering capabilities of HTML5/CSS3 and use application style templates to give your applications that extra look & feel.With this new release, whether you develop on a Windows machine, macOS device or Linux computer, you can create from your development machine executables for any of the three supported operating systems! See here what Miletus technology can do for you in this video: or learn more from a previous blog article. Framework sync From this new TMS WEB Core for Visual Studio Code release, update releases of TMS WEB Core for Delphi and TMS WEB Core for Visual Studio Code will come in sync. As the TMS WEB Core framework itself is now 100% identical between TMS WEB Core for Delphi and TMS WEB Core for Visual Studio Code, you can easily choose what IDE to use and we do not want to let you wait on framework updates if you use any of the two IDEs. From now on, we will release both versions together. New v1.8.2.0 framework features With this new release, you have all the new features that are also in the TMS WEB Core for Delphi release. This means the new components TWebDeviceOrientation, TWebSpeechSynthesis, TWebConsoleLog, TWebChatBox, TWebRatingControl are now all included as well as several features added to the WebGoogleMaps component or enhancements in the grid, treeview and some more. Check the version history for all details. Get started! Users with a TMS ALL-ACCESS license have instant access to the newest TMS WEB Core for Visual Studio Code release. For new users, there is now a fully functional* trial version to explore what new horizons you can discover with RAD, Object Pascal, component based development. (* Debugging from framework source code is not possible with the trial version)

Read More

Rapidly Deploy Visually Stunning Themes For Your Javascript Apps

Give some style for your application is crucial to give life to your products and attract the end-user. But sometimes has a high cost to implements it using CSS. Sencha has a solution which helps solve this problem through a smart theming solution. Sencha Themer empowers you to style Ext JS, ExtAngular and ExtReact apps and make them look great. You can create custom themes using graphical tools – without writing code. Themer gives you access to components and inspection tools to set fine-grained styles and generate theme packages with dynamic stylesheets. With the innovative color palette in Themer, it’s easy to apply different color combinations to different component states. The color palette shows base, body background, and font color with progressively lighter and darker colors. There is also a palette that helps you select colors from Material Design. The Themer font management option allows you to quickly add web fonts from Google fonts. This tool allows you to transform your desktop, tablet, and phone application into a beautiful and modern application creating your own theme without any line of code! What is Sencha Themer? Sencha Themer is a tool to create new themes for your application based on pre-defined themes in a very fast and productive way. The theme created can be exported and shared to reuse again and again. You have the color palette to choose the best base colors, select body background, and font color with progressively lighter and darker colors. There is also a palette that helps you select colors from Material Design. The Themer font management option allows you to quickly add web fonts from Google fonts. There is also access to components and inspection tools to set fine-grained styles and generate theme packages with dynamic stylesheets. Getting Started First, download here and install Sencha Themer on your machine. Second, you will create your new Ext JS, ExtReact, or ExtAngular application to apply the new theme and see updates applying live. Creating the Application You can create a new application by running the commands below: sencha -sd /Users/fabio/sencha-sdks/ext-7.4.0/ generate app AppNewTheme ./app-new-theme-extjs And start your application: cd app-new-theme-extjs/ && sencha app watch Now open your application with fashion option enabled, with this URL: http://localhost:1841/?platformTags=fashion:true How can I change my theme using Sencha Themer? Now that your application is ready and running, let’s open our application on Sencha Themer to change it with whatever you want to give your personality to your application. Follow the steps below to create your own theme. After opening it, click on Create Theme button: Fill the informations about the new theme, giving a name, select your application path on App field, the toolkit of the application you would like to apply the new theme, and finally the base theme you will be based on to create your new theme, then click on Create Theme: After open the theme, select a color on base color field to see it in action: Then when you open your application, you can see that changes were applied automatically: How do I change styles for Specific Components? You can also personalize specific components like buttons, toolbars, grids, forms, and many other components on your application. For our app, let’s change our grid a little bit. From the left side, select the grid component, and then […]

Read More

How To Create A Cross-Platform News App With Delphi

procedure TNewFormFrame.BtnRefreshClick(Sender: TObject); begin   inherited;   RESTRequest1.Execute;  // send request to endpoint     var JSONValue: TJSONValue;   var JSONArray: TJSONArray;   var ArrayElement: TJSONValue;     // after using object we just free them within the Lists   RctList := TList.Create;   ImgList := TList.Create;   LblTitleList := TList.Create;   LblDescpList := TList.Create;     try     JSONValue := TJSONObject.ParseJSONValue(RESTResponse1.Content);     JSONArray := JSONValue.GetValue(‘data’);  // articles are stored in the data array in the JSON response       for ArrayElement in JSONArray do     begin         {$region ‘Create news card’ }       RctNewsCard := TRectangle.Create(vrtscrlbx1);       RctNewsCard.Parent := vrtscrlbx1;       RctNewscard.HitTest := False;       RctNewsCard.Fill.Color := TAlphaColorRec.Ghostwhite;       RctNewsCard.Fill.Kind  := TBrushKind.Solid;       RctNewsCard.Stroke.Thickness := 0;       RctNewsCard.Align := TAlignLayout.Top;       RctNewsCard.Height := 400;       RctNewsCard.Width  := 389;       RctNewsCard.XRadius := 15;       RctNewsCard.YRadius := 15;       RctNewsCard.Margins.Top := 5;       RctNewsCard.Margins.Bottom := 5;       RctNewsCard.Margins.Left := 5;       RctNewsCard.Margins.Right := 5;       RctList.Add(RctNewsCard);  // add to the TList instance       {$endregion}         {$region ‘create image and load image from the url’ }       NewsImage := TImage.Create(RctNewsCard);       NewsImage.Parent := RctNewsCard;       NewsImage.HitTest := False;       NewsImage.Align := TAlignLayout.Top;       NewsImage.Height := 225;       NewsImage.Width  := 389;       NewsImage.Margins.Top := 5;       NewsImage.Margins.Left := 15;       NewsImage.Margins.Right := 15;       NewsImage.Margins.Bottom := 5;       NewsImage.HitTest := False;       NewsImage.MarginWrapMode := TImageWrapMode.Stretch;       NewsImage.WrapMode := TImageWrapMode.Fit;       ImgList.Add(NewsImage);         // load images to the newly created TImage component       var MemoryStream := TMemoryStream.Create;       var HTTPClient   := TNetHTTPClient.Create(nil);       var HTTPRequest  := TNetHTTPRequest.Create(nil);       HTTPRequest.Client := HTTPClient;       try         var ImageURL := ArrayElement.GetValue(‘image’);         HTTPRequest.Get(ImageURL, MemoryStream);         MemoryStream.Seek(0, soFromBeginning);         NewsImage.Bitmap.LoadFromStream(MemoryStream);       finally         FreeAndNil(MemoryStream);         FreeAndNil(HTTPClient);         FreeAndNil(HTTPRequest);       end;       {$endregion}         {$region ‘create title and summary texts in the News Card’ }       LabelTitle := TLabel.Create(RctNewsCard);       LabelTitle.Parent := RctNewsCard;       LabelTitle.Align := TAlignLayout.Top;       LabelTitle.Height := 27;       LabelTitle.Width  := 359;       LabelTitle.HitTest := False;       LabelTitle.AutoSize := True;       LabelTitle.Font.Size := 22;       LabelTitle.Margins.Left := 15;       LabelTitle.Margins.Right := 15;       LabelTitle.Margins.Top := 5;       LabelTitle.Margins.Bottom := 5;       LabelTitle.Text := ‘Title: ‘ + ArrayElement.GetValue(‘title’);       LblTitleList.Add(LabelTitle);         LabelDescription := TLabel.Create(RctNewsCard);       LabelDescription.Parent := RctNewsCard;       LabelDescription.Align := TAlignLayout.Client;       LabelDescription.Height := 131;       LabelDescription.Width  := 359;       LabelDescription.HitTest := False;       LabelDescription.AutoSize := True;       LabelDescription.Font.Size := 15;       LabelDescription.Margins.Left := 15;       LabelDescription.Margins.Right := 15;       LabelDescription.Margins.Top := 5;       LabelDescription.Margins.Bottom := 5;       LabelDescription.Text := ‘Summary: ‘ + ArrayElement.GetValue(‘description’);       LblDescpList.Add(LabelDescription);       {$endregion}     end;   finally     RctList.Free;     ImgList.Free;     LblTitleList.Free;     LblDescpList.Free;   end; end;

Read More

Welcome to the future of software development, again

I have some good news for you, the future of software development has arrived! Well, to be precise, the next possible big thing in the future of software development is here… again. Works anywhere, just add RAM I have this mental block about the name Electron. I’m not entirely sure why it is but whenever I try to remember the name of this ubiquitous web framework my little gray cells shout “Eclipse” and, try as I might, I can’t conjure up the correct name in the appropriate moment during the chatty to and fro of a webinar. I think I have a theory though on why this is happening; my unconscious mind is trying to prevent me from crossing over to the dark side to use Electron to create cross-platform applications. What is wrong with using Electron? Look, there’s nothing wrong with using Electron as such. I’ve actually used Electron and produced an app which was, in effect a website encapsulated by the Electron framework and runtime. But, that said, it is a voracious eater. It will consume every part of your machine’s RAM and CPU resources if left to its own devices. If you don’t believe me just run a quick web search for “electron problems”. The pros of Electron are that it can be a quick route to market. If you have a web app it’s not a massive task to wrap that website or web app with the Electron framework. Also, it implements an auto-update system which means you can push out new versions and improvements with fairly low friction. A web developer is not necessarily an application developer A couple of problems crop up. Behind the scenes of almost every Electron app is the beast which is Node.js – bringer of NPM, the Node Package Manager. The NPM is a superb repository of add-ons, components, modules and time-saving Nodestuffs. Electron / Node developers can get a package for almost everything. If you’re a web developer who has some JavaScript knowledge the NPM can allow you to pull in components to save you a ton of work. Isn’t using NPM a bit like installing Delphi Components? Well, yes it is. Except with one very specific difference: Delphi is compiled down to native code with an optimizing compiler. If you include 1000 Node packages – either deliberately due to some form of overzealous optimism, or inadvertently due to one package having a dependency on another which depends on another five which all depend on another six packages – then you will have 1000 Node packages in your app even if all it does is display a page saying “hello world” in flashing magenta. If you do the same in a Delphi app you will get a lot of unnecessary junk included – but Delphi’s compiler and linking mechanism will exclude a massive amount of things you pulled in but don’t actually get used. It can’t totally protect you from yourself and your component-hoarding kitchen-sink ways but it will definitely save you from creating a Gigagbyte app when it only needed a few MB at most. Low code is the Next Big Thing Right. Low Code apps. You’ve seen some of them and, yes, they can be great for creating apps usually either by answering questions in a wizard […]

Read More

How To Capture Highly Customizable Website Snapshots

Screenshotlayer is a lightweight REST API built to deliver high-quality PNG, JPEG & GIF visual website snapshots through a simple and easy to use interface. We’re going to make use of that API to create a really powerful website snapshot app. Website snapshots, in Delphi, using the Screenshotlayer API The Screenshotlayer API is easy to integrate and works without requiring a queue. With the Screenshotlayer API, you can create a reliable web snapshot automation service. You can capture daily, weekly or monthly, and create an archive if you need. In this post, we will integrate Screenshotlayer API into a cross-platform desktop and mobile application using the Delphi FireMonkey Low-Code Wizard. What is the Screenshotlayer API? The Screenshotlayer API is a world-class RESTful web service to capture highly customizable snapshots of any website in seconds. Just give the website URL, and the web service returns you a screenshot of the website. It offers advanced options, for instance: Set preferred thumbnail dimensions and viewport Inject your CSS Specify a capturing delay Export to AWS S3, FTP  and more How to use Screenshotlayer API? Capturing a snapshot using the Screenshotlayer API is simple. Each API request is based on the following URL and can be configured with different parameters. To make a simple request, you should pass the API access key and URL of the website that you want to take a screenshot of. Moreover, based on how you wish to configure your screenshot, you can choose from several optional parameters: fullpage – take a full height of the target website width – specify your preferred thumbnail width in pixels viewport – specify your preferred viewport dimensions in pixels format – screenshot output format secret_key – your secret key, an MD5 hash of the target & secret word (optional) delay – specify a delay before a screenshot is captured (in seconds) export – export snapshot via custom FTP path or using your AWS S3 user details Let’s see an example of a request Depending on your subscription plan, you can have more secure data streams and features or limits. For instance, higher-level subscription plan users can establish a secure connection. You can have maximum API performance, and the request limit is higher. URL Encryption – If you need a more secure connection, you can utilize the secret key for every API request. First, you need to specify the secret key on the dashboard. My secret key, of course, is the word “delphi”. Then we need to combine the URL and secret keyword into one string and create an MD5 hash out of the string. After that, you can give that value in the query. The Screenshotlayer API Features By default, screenshots are rendered based on the height of the selected viewport. You can alternatively request the full height of the target website with the parameters that we talked about above. CSS Injection – The Screenshotlayer API enables you to inject a custom CSS stylesheet into the target website by appending an existing CSS file URL to the API’s css_url parameter. TTL (Caching Time) – By default, website snapshots are cached for 30 days. Using the ttl parameter, you can specify a custom caching time lower than the default setting. Furthermore, you can have a fresh screenshot of the target website by using the force parameter, which refreshes the target website. How to export website snapshots to AWS S3 or […]

Read More

What’s new in TMS FNC Maps v2.0

Introducing the TTMSFNCRouteCalculator component, OpenLayers polyline labels and Google Maps geodesic polylines with the release of TMS FNC Maps v2.0. Route calculator with map interaction The new TTMSFNCRouteCalculator component lets you create and edit routes based on existing directions and geocoding services. Routes can also be imported from GPX and exported to GPX. The TTMSFNCRouteCalculator allows you to create a new route, add, update and remove waypoints or segments. This standalone component can be used to manage routes programmatically, then save or export your routes for later use. The following directions & geocoding services are supported: Azure, Bing, Google, Here, MapBox In combination with TTMSFNCMaps routes can be created, edited and displayed by interacting with the map.Simply assigning a TTMSFNCRouteCalculator to the TTMSFNCMaps component will enable the map interaction as well as extra methods and events. TMSFNCRouteCalculator1.Active := True; TMSFNCMaps1.RouteCalculator := TMSFNCRouteCalculator1; The following mapping services are supported: Google Maps, Here, OpenLayers    The steps below require no additional code at all, this is done by interacting with the map only. Now the first step is to pick a start location with a single click on the map. The second click will set the first waypoint for your route Then every subsequent click will add a new waypoint Drag and drop an existing segment to insert a new waypoint Drag and drop an existing waypoint to a new location Waypoints and segments can also be selected and optionally removed from the route OpenLayers polyline & polygon labels It’s now possible to associate a label text with a polyline or polygon in TTMSFNCOpenLayers. This feature is currently only available for: OpenLayers This sample demonstrates how to add a label text to an existing polyline, configure the label’s appearance and position, then make sure the polyline is updated on the map. TMSFNCOpenLayers1.BeginUpdate; TMSFNCOpenLayers1.Polylines[0].&Label.Text := ‘Route from New York to Washington’; TMSFNCOpenLayers1.Polylines[0].&Label.FontColor := gcRed; TMSFNCOpenLayers1.Polylines[0].&Label.FontSize := 18; TMSFNCOpenLayers1.Polylines[0].&Label.OffsetX := 170; TMSFNCOpenLayers1.Polylines[0].Recreate := True; TMSFNCOpenLayers1.EndUpdate; Google Maps geodesic polylines Another new features is the possibility to display geodesic polylines with Google Maps. This feature is currently only available for : Google Maps Just set the polyline’s Geodesic property to True to make it display as a geodesic line. TMSFNCGoogleMaps1.Polylines[0].Geodesic := True; That’s it for this TMS FNC Maps v2.0 update. I hope you’ll enjoy all these exciting new features!

Read More

Rapidly Build Testing Automation To Supercharge Javascript App Quality

The need to find and fix quality issues early in the development cycle has always been baked into the core philosophy of every serious development team, even in the face of intense delivery pressure. The evolution of web technology introduced a new urgency for software quality. Sencha Test is the most comprehensive unit and end-to-end testing solution for Ext JS, including support for end-to-end testing of ExtAngular, Angular, ExtReact and React apps. Deliver higher quality apps and reduce testing time & cost with powerful automation through Sencha Test. What are the benefits of a testing framework? Reduces barriers to testing by providing a professionally designed, documented and supported testing framework for Ext JS and ExtReact apps Shortens testing startup time by delivering pre-authored tests for complex Ext JS and ExtReact example apps Automates testing by allowing scheduled, unattended test runs that leverage CI Empowers users to develop a large number of tests with an easy-to-use JavaScript built-in editor Improves code quality, accelerates time to market, and ensures a consistent end-user experience In this article we will learn more about Sencha Test and how you can use it to increase the quality if your software output. With Sencha Test, you can create end-to-end tests quickly, and execute them on multiple browsers simultaneously. Cross-browser testing is critical to ensuring quality for organizations, and test automation is a requirement to meet delivery timelines. Sencha Test helps you build an end-to-end testing plan without having to cobble together testing tools. Is there an IDE I can use to write Javascript tests? Sencha Test Studio is the graphical user interface that allows you to write Jasmine tests in a built-in Sencha Test editor. You can write tests using JavaScript and store them in your team’s preferred source control system. Test Studio allows you to create tests directly in Sencha Test, or code in a separate IDE, and execute the test immediately. The iterative unit testing process helps you create more robust code by constantly testing it along the way. What tools can I use to automate Javascript tests? Using Test Runner, you can run selected unit and functional tests on any or all of the browsers on a local machine, a connected mobile device, or on a browser farm. The local Test Runner can be used for test creation and debugging. An external browser farm or a Selenium grid is used by the Sencha Test Command Line Interface (CLI) to run the same tests on a Continuous Integration (CI) system – allowing you to schedule automated test runs nightly or at a convenient time, with minimal configuration. Sencha Test Command Line Interface (CLI) helps you achieve the full power of automated test runs. Once tests are authored and checked into the source control repository, you can launch them from your Continuous Integration (CI) system. The CI system can invoke the CLI automatically, once it senses a change to the application code or the test files in the source control repository. How can I access historical Javascript test results easily? The Test Archiver enables you to track historical testing trends in your projects as well as compare results between runs. Automated visual analysis allows you to identify runs where screens do not render correctly or visual glitches are present. The archiver leverages the full power of […]

Read More