Method and Apparatus for Rendering Websites on Physical Devices
In at least one embodiment, the system and method described herein provides a concrete and tangible technical solution to the problem of activating and testing multiple web pages on multiple devices to determine any anomalies or other errors in rendering the web pages due to, for example, the unpredictable nature of rendering web pages on multiple devices having, for example, a multitude of different configuration characteristics. Furthermore, the system and method, in at least one embodiment, provide an automated process that is capable of testing web pages and devices remotely and in parallel at a high bandwidth. A system and method utilize a device service to coordinate: activating a web browser on each of the set of devices selected, rendering the web page by each web browser of the set of devices selected, and capturing one or more images of the web page as rendered by the set of devices selected.
Latest Springbox Labs, Inc. Patents:
This application claims the benefit under 35 U.S.C. §119(e) and 37 C.F.R. §1.78 of U.S. Provisional Application Nos. 62/067,317 and 62/067,312, which were both filed on Oct. 22, 2014 and are both incorporated by reference in their entirety.
This application incorporates by reference the U.S. patent application having Attorney Docket No. SPRINGBOX1100, entitled “METHOD AND APPARATUS FOR RENDERING AN IMAGE FOR AN ENTIRE WEB PAGE ON PHYSICAL DEVICES,” inventors Todd Berry, Dina Fitzpatrick, and Brian Brooks, filed on Oct. 22, 2015.
COPYRIGHT NOTICEA portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
TECHNICAL FIELDThis disclosure relates generally to website design and testing. More particularly, embodiments disclosed herein relate to a system, method, and computer program product for remotely activating applications on multiple remote devices, rendering a website on the multiple remote devices, and routing the results to a user as an analysis report and/or images.
BACKGROUND OF THE RELATED ARTTraditionally, websites have been designed for viewing on desktop and laptop computers having standard display sizes. Accordingly, it has been relatively easy to design websites for display on such devices. However, the proliferation of devices such as smartphones and tablet computers has resulted in a corresponding proliferation of display sizes and aspect ratios.
A typical procedure for ensuring that a website displays properly on a device has required, firstly, that the device be in a tester's possession. A website URL (Uniform Resource Loactor) provides a location of a web page of the website. References herein to a website URL refer to a URL of the website that references a web page of the website. Once the device is in the tester's possession, the device's browser may be launched and the website URL (Uniform Resource Locator) typed into the browser (typically through a touch screen). The browser may then display the website on the screen. Once displayed, the tester may capture an image of the screen. The tester then may scroll down the website and perform another capture of the screen. This process is repeated for each screen page of the website. The precise process of obtaining such a screenshot and the number of screenshots for a website may vary per device and operating system. The screenshots for the website under testing may then be saved or exported by using a cable or wireless connection to a computer or sending an e-mail from the device. The resulting device images are then stitched together using photo editing software.
As can be appreciated, for a wide spectrum of devices, this can be an expensive and time-consuming proposition. Furthermore, the devices must be in the physical proximity and be physically manipulatable by a user. Advances in technology continue to bring challenges to website design and testing. Consequently, there is always room for innovations and improvements.
SUMMARY OF THE DISCLOSUREEmbodiments disclosed herein generally relate to devices that physically render web pages of a website in a testing environment. Due to variations and revisions of web pages and devices that display the web pages, the particular physical rendering and display of multiple web pages by multiple devices often yields unpredictable results. A website designer designs one or more web pages for display by multiple devices that display web pages, such as smart phones, tablet computers, laptop computers, and desktop computers. Often the devices that will access the website differ in one or more of numerous ways, such as by different operating systems, different embedded and integrated browser applications, different physical display sizes, different display resolutions, different color palettes, and different font libraries. Furthermore, many of the foregoing features of the devices are often updated or otherwise changed on a physical and/or software (including firmware and operating systems) basis. Additionally, many websites often change the content, format, graphics, or other design features.
Against this backdrop of changing devices, changing web pages of websites, and the unpredictable results of physical rendering and display of a web page on the devices, physically testing the web pages on devices of interest in an on demand environment presents a tangible and concrete technical problem. Embodiments herein provide a technical solution to overcoming the physical limitations of selecting devices and web pages, activating the devices for testing the web pages, and returning test results to a user. Furthermore, time constraints to successfully implement web pages across multiple device platforms while utilizing a minimal amount of human resources benefits from embodiments of the technical solution described herein. In at least one embodiment, the system and method can remotely test multiple web pages on multiple device platforms, such as 10 or more, within a 5-30 second window.
Additionally, embodiments disclosed herein relate generally to the field of website design and testing, specifically in the context of a designing and testing a website for viewing on devices including mobile devices. In some embodiments, a system includes a web application, a device service in communication with a plurality of devices, and a device application running on the devices. A tester may use the web application with a particular device service to select devices for testing. In at least one embodiment, the user may also input one or more a URL's for a website for testing and/or select a pre-identified website domain for testing. In at least one embodiment, the one or more URL's or website domain and list of selected devices are provided via the web application to the device service, which causes the selected devices to load the web page of the website at the designated URL using a browser embedded in or integrated with the device application. In some embodiments, device applications running on the selected devices load the websites and provide images corresponding to entire pages for a given URL (not just what fits on a screen) to the web application via the device service.
Embodiments disclosed herein can provide many advantages. For example, embodiments allow a tester to test multiple devices at a given time and without having to individually activate and configure the device's web browser. Web pages often exceed the display size of a device. Scrolling allows the entire, loaded web page to be displayed. In at least one embodiment, the device application is able to capture an image of an entirety of a web page rather than individual screenshots.
These, and other, aspects of the disclosure will be better appreciated and understood when considered in conjunction with the following description and the accompanying drawings. It should be understood, however, that the following description, while indicating various embodiments of the disclosure and numerous specific details thereof, is given by way of illustration and not of limitation. Many substitutions, modifications, additions and/or rearrangements may be made within the scope of the disclosure without departing from the spirit thereof, and the disclosure includes all such substitutions, modifications, additions and/or rearrangements.
The drawings accompanying and forming part of this specification are included to depict certain aspects of the disclosure. It should be noted that the features illustrated in the drawings are not necessarily drawn to scale. A more complete understanding of the disclosure and the advantages thereof may be acquired by referring to the following description, taken in conjunction with the accompanying drawings in which like reference numbers indicate like features.
The disclosure and various features and advantageous details thereof are explained more fully with reference to the exemplary, and therefore non-limiting, embodiments illustrated in the accompanying drawings and detailed in the following description. It should be understood, however, that the detailed description and the specific examples, while indicating the preferred embodiments, are given by way of illustration only and not by way of limitation. Descriptions of known programming techniques, computer software, hardware, operating platforms and protocols may be omitted so as not to unnecessarily obscure the disclosure in detail. Various substitutions, modifications, additions and/or rearrangements within the spirit and/or scope of the underlying inventive concept will become apparent to those skilled in the art from this disclosure.
The user device 101 may be embodied as a personal computer or laptop computer, for example. Personal computers include smartphones and tablet computers. The web application 102 may be an application program including a user interface and capable of communicating with the device service 104. In some embodiments, as will be discussed in greater detail below, the web application 102 may allow a tester to input a URL for each of one or more web pages of a website or select a website domain for testing and/or may select corresponding devices in device farm 106 to test the web pages. In at least one embodiment, the web app includes default URL's, website domains, and/or devices for testing. The user device 101 communicates with the one or more servers 103 via a network, such as the Internet.
The following description applies to sending a URL and, unless otherwise indicated, also applies to multiple URL's and website domains. The device service 104 may be implemented on one or more servers 103, for example, a cloud-based service providing access to the device farm 106 for a fee. The device service 104 communicates with the devices 108a-108n, sending them the URL received from the web application 102 to coordinate activating a web browser on each of the set of devices selected, rendering the web page by each web browser of the set of devices selected, for each of the set of devices selected, and capturing one or more images of the web page as rendered by the set of devices selected. The device applications 110a-110n cause their integrated web browsers 112a-112n to open the web page. The device applications 110a-110n then render and capture images of the web pages identified by the URL(s) or web domain selection and transmit them via the device service 104 to the web application 102. In at least one embodiment, the URL(s) and web domain are predetermined and stored by the device service 104 by, for example, a previous selection of the tester (also referred to as a “user”).
In some embodiments, the request to a device service (e.g., the device service 104 shown in
Advantageously, in some embodiments, the images for the websites are the entire page for the given URL, not just what would fit on a device's screen. However, the user may want to see how much information fits on the device screen. Consequently, in some embodiments, the web application may show one or more representative lines, such as a fold line, so the user can conveniently view possible page divisions.
For example, shown at 302 in
In some embodiments, the rendered image may be very large, owing to the high resolution (DPI) of some mobile devices. In this case, the web application 102 may show a scaled image and allow the user to click the image to see a full screen image. This gives the user to quickly scan the image for anomalies, while still being able to zoom in.
Some embodiments may also provide the user with the ability to compare one or more images to highlight a possible problem or differences from one version of the website to the next. This feature may show one or more image and use color and/or boxes around differences. The areas that are the same may be slightly dimmed to place more emphasis on the differences.
In some embodiments, the device service 104 functions as a middleman between the web application 102 and the physical devices 108a-108n. In particular, in some embodiments, the device service 104 provides secure REST API calls: (i) Type of devices that are available to render websites; (ii) Status of the devices (availability, working on a rendering (job), etc.); and (iii) Cancel a job on a device.
In some embodiments, the web application 102 makes secure REST API calls to the device service 104 to request a URL for a given device. The device service 104 then creates a job for a device. If all devices are busy, the callback for the REST API will provide status of the job.
When the job is complete, the callback will return and tell the web application 102 it is complete and provide the image for viewing.
Below is a representative sample and description of the REST API for creating a job:
-
- ### POST/api/vl/jobs
- Posts a new job.
- Required fields:
- ‘requested_device_type’: The device type requested (‘‘iPhone 5s’ ‘iPad Air’ . . . ’)
- ‘url’: The requested URL
- ‘orientation’: ‘portrait’ or ‘landscape’
- ‘format’: ‘jpg’ or ‘png’
- ‘callback_url’: url to call when a job is being processed
- The callback is used (via http POST) to notify of status changes for a job and to send the image to the requesting server. The images are ephemeral on Mobilizer Capture Service, so you should save the image from the callback.
- Callbacks can be made multiple times during job execution:
- 1. To indicate status changes
- 2. Once complete, a callback will be made with a time sensitive URL to the image. The URL requires the same authentication.
- Callback contents (Content-Type application/json):
- Required fields:
-
-
- Other possible fields, currently not used:
- ‘requested_os’
- ‘requested_os_version’
- Returns:
- JSON representation of the full job (including the newly created ‘id’)
- Other possible fields, currently not used:
-
As the cloud service 104 creates jobs, in some embodiments, it sends commands to the device application 110a-110n being queued over TCP/IP. The message traffic over TCP/IP contains the URL to be rendered.
In some embodiments, the device application 108a-110n is a native application for each device OS and is used to capture the website on that device. The native application may be deployed to devices that have network connectivity to the device service. In some embodiments, the device application can support multiple concurrent website renderings. The number supported can vary based on the computing power of the device. In some embodiments, the website image may be created as a full-size rendering of the website in either PNG or JPEG format, depending on the requestor.
Turning now to
Further details on the operation of the device application(s) described above can be found in U.S. Provisional Application No. 62/067,312.
Referring to
In operation 508, the device service 104 and the server 103 transmit image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected. In at least one embodiment, the third computer system is the user device 101. In at least one embodiment, the third computer system is another computer system (not shown). In at least one embodiment, the user interface provided by the web app 102 allows a user of the user device 101 selects a method of transmitting the image test result data and/or a destination computer system to receive the image test result data. The method of transmitting the image test result data is a matter of design choice and is, for example, via electronic mail (email) or as one or more images with data to allow the third computer system to render the images in a browser of the third computer system.
The nature of the image test result data is a matter of design choice. In at least one embodiment, the image test result data includes the captured images. In at least one embodiment, the captured images are analyzed as discussed with reference to
In operation 606, in at least one embodiment, if a remote computer system performs operation 604, the remote computer system then either (i) transmits the image-to-target comparison results data to server 103 and device service 104, which then transmit the image-to-target results data to user device 101 or (ii) transmits the image-to-target comparison results data directly to user device 101. The tester can then review the results and take appropriate action based on the results.
I/O device(s) 819 may provide connections to peripheral devices, such as a printer, and may also provide a direct connection to a remote server computer systems via a telephone link or to the Internet via an ISP. I/O device(s) 819 may also include a network interface device to provide a direct connection to a remote server computer systems via a direct network link to the Internet via a POP (point of presence). Such connection may be made using, for example, wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like. Examples of I/O devices include modems, sound and video devices, and specialized communication devices such as the aforementioned network interface.
Computer programs and data are generally stored as instructions and data in a non-transient computer readable medium such as a flash memory, optical memory, magnetic memory, compact disks, digital versatile disks, and any other type of memory. The computer program is loaded from a memory, such as mass storage 809, into main memory 815 for execution. Computer programs may also be in the form of electronic signals modulated in accordance with the computer program and data communication technology when transferred via a network.
The processor 813, in one embodiment, is a microprocessor manufactured by Motorola Inc. of Illinois, Intel Corporation of California, or Advanced Micro Devices of California. However, any other suitable single or multiple microprocessors or microcomputers may be utilized. Main memory 815 is comprised of dynamic random access memory (DRAM). Video memory 814 is a dual-ported video random access memory. One port of the video memory 814 is coupled to video amplifier 816. The video amplifier 816 is used to drive the display 817. Video amplifier 816 is well known in the art and may be implemented by any suitable means. This circuitry converts pixel DATA stored in video memory 814 to a raster signal suitable for use by display 817. Display 817 is a type of monitor suitable for displaying graphic images.
Thus, the system and method described herein provides a concrete and tangible technical solution to the problem of activating and testing multiple web pages on multiple devices to determine any anomalies or other errors in rendering the web pages due to, for example, the unpredictable nature of rendering web pages on multiple devices having, for example, a multitude of different configuration characteristics. Furthermore, the system and method, in at least one embodiment, provide an automated process that is capable of testing web pages and devices remotely and in parallel at a high bandwidth.
Although the invention has been described with respect to specific embodiments thereof, these embodiments are merely illustrative, and not restrictive of the invention. The description herein of illustrated embodiments of the invention, including the description in the Abstract and Summary, is not intended to be exhaustive or to limit the invention to the precise forms disclosed herein (and in particular, the inclusion of any particular embodiment, feature or function within the Abstract or Summary is not intended to limit the scope of the invention to such embodiment, feature or function). Rather, the description is intended to describe illustrative embodiments, features and functions in order to provide a person of ordinary skill in the art context to understand the invention without limiting the invention to any particularly described embodiment, feature or function, including any such embodiment feature or function described in the Abstract or Summary. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes only, various equivalent modifications are possible within the spirit and scope of the invention, as those skilled in the relevant art will recognize and appreciate. As indicated, these modifications may be made to the invention in light of the foregoing description of illustrated embodiments of the invention and are to be included within the spirit and scope of the invention. Thus, while the invention has been described herein with reference to particular embodiments thereof, a latitude of modification, various changes and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of embodiments of the invention will be employed without a corresponding use of other features without departing from the scope and spirit of the invention as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit of the invention.
Reference throughout this specification to “one embodiment”, “an embodiment”, or “a specific embodiment” or similar terminology means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment and may not necessarily be present in all embodiments. Thus, respective appearances of the phrases “in one embodiment”, “in an embodiment”, or “in a specific embodiment” or similar terminology in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any particular embodiment may be combined in any suitable manner with one or more other embodiments. It is to be understood that other variations and modifications of the embodiments described and illustrated herein are possible in light of the teachings herein and are to be considered as part of the spirit and scope of the invention.
In the description herein, numerous specific details are provided, such as examples of components and/or methods, to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that an embodiment may be able to be practiced without one or more of the specific details, or with other apparatus, systems, assemblies, methods, components, materials, parts, and/or the like. In other instances, well-known structures, components, systems, materials, or operations are not specifically shown or described in detail to avoid obscuring aspects of embodiments of the invention. While the invention may be illustrated by using a particular embodiment, this is not and does not limit the invention to any particular embodiment and a person of ordinary skill in the art will recognize that additional embodiments are readily understandable and are a part of this invention.
Any suitable programming language can be used to implement the routines, methods or programs of embodiments of the invention described herein, including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. Any particular routine can execute on a single computer processing device or multiple computer processing devices, a single computer processor or multiple computer processors. Data may be stored in a single storage medium or distributed through multiple storage mediums, and may reside in a single database or multiple databases (or other data storage techniques). Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different embodiments. In some embodiments, to the extent multiple steps are shown as sequential in this specification, some combination of such steps in alternative embodiments may be performed at the same time. The sequence of operations described herein can be interrupted, suspended, or otherwise controlled by another process, such as an operating system, kernel, etc. The routines can operate in an operating system environment or as stand-alone routines. Functions, routines, methods, steps and operations described herein can be performed in hardware, software, firmware or any combination thereof.
Embodiments described herein can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium, such as a computer-readable medium, as a plurality of instructions adapted to direct an information processing device to perform a set of steps disclosed in the various embodiments. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the invention.
It is also within the spirit and scope of the invention to implement in software programming or code any of the steps, operations, methods, routines or portions thereof described herein, where such software programming or code can be stored in a computer-readable medium and can be operated on by a processor to permit a computer to perform any of the steps, operations, methods, routines or portions thereof described herein. The invention may be implemented by using software programming or code in one or more digital computers, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, and so on. Optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. The functions of the invention can be embodied in distributed, or networked systems, components and circuits, and the like. In another example, communication or transfer (or otherwise moving from one place to another) of data may be wired, wireless, or by any other means.
A “computer-readable medium” may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, system or device. The computer readable medium can be, by way of example only but not by limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, system, device, propagation medium, or computer memory. Such computer-readable medium shall be machine readable and include software programming or code that can be human readable (e.g., source code) or machine readable (e.g., object code). Examples of non-transitory computer-readable media can include random access memories, read-only memories, hard drives, data cartridges, magnetic tapes, floppy diskettes, flash memory drives, optical data storage devices, compact-disc read-only memories, and other appropriate computer memories and data storage devices. In an illustrative embodiment, some or all of the software components may reside on a single server computer or on any combination of separate server computers. As one skilled in the art can appreciate, a computer program product implementing an embodiment disclosed herein may comprise one or more non-transitory computer readable media storing computer instructions translatable by one or more processors in a computing environment.
A “processor” includes any, hardware system, mechanism or component that processes data, signals or other information. A processor can include a system with a central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Processing need not be limited to a geographic location, or have temporal limitations. For example, a processor can perform its functions in “real-time,” “offline,” in a “batch mode,” etc. Portions of processing can be performed at different times and at different locations, by different (or the same) processing systems.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, product, article, or apparatus that comprises a list of elements is not necessarily limited only those elements but may include other elements not expressly listed or inherent to such process, product, article, or apparatus.
Furthermore, the term “or” as used herein is generally intended to mean “and/or” unless otherwise indicated. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present). As used herein, a term preceded by “a” or “an” (and “the” when antecedent basis is “a” or “an”) includes both singular and plural of such term, (i.e., that the reference “a” or “an” clearly indicates only the singular or only the plural). Also, as used in the description herein, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
It will be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. Additionally, any signal arrows in the drawings/figures should be considered only as exemplary, and not limiting, unless otherwise specifically noted.
Claims
1. A method comprising:
- executing a program by a first computer system that transforms the first computer system into a machine to perform: receiving from a second computer system a selection of a set of devices to be tested for rendering the web page of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
2. The method of claim 1 further comprising:
- executing the program by the first computer system to perform: providing data that includes structure and layout of a user interface to the second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select, and the second computer system to send, a selection of the set of devices in the device farm to be tested for rendering a web page of the website.
3. The method of claim 2 wherein:
- providing data that includes structure and layout of a user interface to a second computer system further comprises: providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) data identifying one or more web pages of a website to be tested and (ii) a set of devices in a device farm to be tested for rendering the web page of the website;
- the method further comprising: receiving the data identifying the one or more web pages of the website to be tested; and utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser by the set of devices selected each web page identified; and for each of the set of devices selected, capturing one or more images of each web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
4. The method of claim 1 wherein the test result data comprises the one or more images captured and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises:
- transmitting the image test result data to the third computer system to allow the third computer system to display the one or more images captures and to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
5. The method of claim 1 further comprising:
- transmitting the captured images to a fourth computer system to allow the fourth computer system to compare the one or more images with one or more predetermined target images and generated image-to-target comparison results data; and
- receiving the image-to-target comparison results data; and
- wherein transmitting image test result data comprises: transmitting the image-to-target comparison results data.
6. The method of claim 1 wherein the third computer system is the same as the second computer system.
7. The method of claim 1 further comprising executing a program by a first computer system that transforms the first computer system into a machine to perform:
- detecting when any of the devices are unavailable to be utilized by the device service to coordinate the activating, rendering, and capturing; and
- for each of the devices that are unavailable, performing one or more of the following processes: restarting each unavailable device; and reassigning the activating, rendering, and capturing from an unavailable device to an available device.
8. The method of claim 7 further comprising executing a program by a first computer system that transforms the first computer system into a machine to perform:
- validating that each device in the set of devices selected is available for the activating, rendering, and capturing.
9. The method of claim 1 wherein the selection of-a set of devices is a selection of particular types of devices and not a selection of a particular device.
10. The method of claim 1 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises:
- transmitting the one or more images to a third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of each web page by each of the set of devices selected, wherein transmitting the one or more images to a third computer system comprises a member of a group consisting of: transmitting the one or more images in an email; or transmitting the one or more images with data to allow the third computer system to render the images in a browser of the third computer system.
11. The method of claim 1 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises:
- transmitting one image per web page per device selected to the third computer system to allow the third computer system to display each image to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
12. The method of claim 1 further comprising:
- executing the program by the first computer system that transforms the first computer system into a machine to perform: providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) multiple identifiers of multiple web pages of the website to be tested and (ii) the set of devices in the device farm to be tested for rendering the multiple web pages of the website; receiving the identifiers of the web pages of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser of the web pages by the set of devices selected; and for each of the set of devices selected, capturing images of the web pages as rendered by the set of devices selected; and transmitting the images to the third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of the web pages by each of the set of devices selected.
13. The method of claim 1 wherein the identifier is a uniform resource locator.
14. The method of claim 1 wherein each web browser of each device is a member of a group consisting of: (i) an integrated web browser of the device or (2) or an embedded in an application of the device.
15. The method of claim 1 wherein the set of devices comprise:
- one or more members of a group consisting of: smart phones, tablet personal computers, laptop personal computers, and desktop personal computers;
- one or more operating systems; and
- one or more browser type applications.
16. The method of claim 1 wherein the data identifying one or more web pages of a website to be tested comprises at least one member of a group consisting of (i) one or more identifiers of one or more web pages of a website to be tested or (ii) an identification of one or more web sites to be tested.
17. The method of claim 16 wherein the one or more identifiers of one or more web pages of the website to be tested comprises one or more uniform resource locators of the one or more web pages.
18. An apparatus comprising:
- a first computer system, the first computer system comprising: a processor; and a memory, coupled to the processor, executing a program by the processor of the first computer system that transforms the first computer system into a machine to perform: receiving from a second computer system a selection of a set of devices to be tested for rendering the web page of the website; utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
19. The apparatus of claim 18 wherein the code is further executable by the processor for:
- providing data that includes structure and layout of a user interface to the second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select, and the second computer system to send, a selection of the set of devices in the device farm to be tested for rendering a web page of the website.
20. The apparatus of claim 18 wherein the test result data comprises the one or more images captured and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises:
- transmitting the image test result data to the third computer system to allow the third computer system to display the one or more images captures and to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
21. The apparatus of claim 18 wherein the code is further executable by the processor for:
- transmitting the captured images to a fourth computer system to allow the fourth computer system to compare the one or more images with one or more predetermined target images and generated image-to-target comparison results data;
- providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) data identifying one or more web pages of a website to be tested and (ii) a set of devices in a device farm to be tested for rendering the web page of the website; and
- receiving the image-to-target comparison results data; and
- wherein transmitting image test result data comprises: transmitting the image-to-target comparison results data,
- the system wherein the code is further executable by the processor for: receiving the data identifying the one or more web pages of the website to be tested; and utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser by the set of devices selected each web page identified; and for each of the set of devices selected, capturing one or more images of each web page as rendered by the set of devices selected; and transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
22. The system of claim 1 wherein the third computer system is the same as the second computer system.
23. The system of claim 18 wherein the code is further executable by the processor for:
- detecting when any of the devices are unavailable to be utilized by the device service to coordinate the activating, rendering, and capturing; and
- for each of the devices that are unavailable, performing one or more of the following processes: restarting each unavailable device; and reassigning the activating, rendering, and capturing from an unavailable device to an available device.
24. The system of claim 23 wherein the code is further executable by the processor for:
- validating that each device in the set of devices selected is available for the activating, rendering, and capturing.
25. The system of claim 18 wherein the selection of-a set of devices is a selection of particular types of devices and not a selection of a particular device.
26. The system of claim 18 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises:
- transmitting the one or more images to a third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of each web page by each of the set of devices selected, wherein transmitting the one or more images to a third computer system comprises a member of a group consisting of: transmitting the one or more images in an email; or transmitting the one or more images with data to allow the third computer system to render the images in a browser of the third computer system.
27. The system of claim 18 wherein transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected comprises:
- transmitting one image per web page per device selected to the third computer system to allow the third computer system to display each image to allow the user to evaluate the rendering of the web page by each of the set of devices selected.
28. The system of claim 18 wherein the code is further executable by the processor for:
- providing data that includes structure and layout of a user interface to a second computer system to cause the second computer system to present the user interface to a user of the second computer system to allow the user to select and the second computer system to send (i) multiple identifiers of multiple web pages of the website to be tested and (ii) the set of devices in the device farm to be tested for rendering the multiple web pages of the website;
- receiving the identifiers of the web pages of the website;
- utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering by each web browser of the web pages by the set of devices selected; and for each of the set of devices selected, capturing images of the web pages as rendered by the set of devices selected; and
- transmitting the images to the third computer system to allow the third computer system to display each of the images and to allow the user to evaluate the rendering of the web pages by each of the set of devices selected.
29. The system of claim 18 wherein the identifier is a uniform resource locator.
30. The system of claim 18 wherein each web browser of each device is a member of a group consisting of: (i) an integrated web browser of the device or (2) or an embedded in an application of the device.
31. The system of claim 18 wherein the set of devices comprise:
- one or more members of a group consisting of: smart phones, tablet personal computers, laptop personal computers, and desktop personal computers;
- one or more operating systems; and
- one or more browser type applications.
32. The system of claim 18 wherein the data identifying one or more web pages of a website to be tested comprises at least one member of a group consisting of (i) one or more identifiers of one or more web pages of a website to be tested or (ii) an identification of one or more web sites to be tested.
33. The system of claim 32 wherein the one or more identifiers of one or more web pages of the website to be tested comprises one or more uniform resource locators of the one or more web pages.
34. A non-transitory, computer readable medium comprising a program stored therein that is executable by a processor of a first computer system to transform the first computer system into a machine to perform:
- receiving from a second computer system a selection of a set of devices to be tested for rendering the web page of the website;
- utilizing a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and
- transmitting image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
35. A client computer system comprising:
- a processor; and
- a memory, coupled to the processor, that includes a program executable by a processor of the client computer system to perform: launching a user interface to cause the client computer system to present the user interface to a user of the client computer system to allow the user to select and the client computer system to send (i) multiple identifiers of multiple web pages of the website to be tested and (ii) the set of devices in the device farm to be tested for rendering the multiple web pages of the website; sending to a first computer system a selection of a set of devices to be tested for rendering the web page of the website, wherein the first computer system utilizes a device service to coordinate: activating a web browser on each of the set of devices selected; rendering the web page by each web browser of the set of devices selected; and for each of the set of devices selected, capturing one or more images of the web page as rendered by the set of devices selected; and receiving image test result data based on the one or more images captured to a third computer system to allow evaluation of the rendering of the web page by each of the set of devices selected.
Type: Application
Filed: Oct 22, 2015
Publication Date: Apr 28, 2016
Applicant: Springbox Labs, Inc. (Austin, TX)
Inventors: Todd Berry (Cedar Park, TX), Dina Fitzpatrick (Austin, TX), Broderick Young (Austin, TX)
Application Number: 14/920,820