IP Library Granted Patent US 11,222,091
Granted Patent B2
US 11,222,091 · App. 16/462,272 · Granted Jan 11, 2022

Systems and methods for development of web products

Inventors: Xin Liu (Nanjing, CN); Yuran Ou (Nanjing, CN); Tianyu Xiao (Nanjing, CN)
Assignee: Citrix Systems, Inc.
G06F16/958G06F8/38G06F8/71
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,222,091
App. No.
16/462,272
Granted
Jan 11, 2022
Kind
B2
Abstract

At least one target hash value is generated for a target version of a Web product from contents of a Web page displayed by the target version of the Web product. The target hash value is compared to at least one corresponding baseline hash value generated from a Web page displayed by a baseline version of the Web product. A difference between the target hash value and the baseline hash value indicates a difference between a user interface of the target version of the Web product and a user interface of the baseline version of the Web product. The user interface of the target version of the Web product is generated in response to the comparison between the target hash value and the baseline hash value.

Claims (75)

1. A method of generating a user interface of a Web product, comprising:

generating at least one target hash value for a target version of the Web product from contents of a Web page displayed by the target version of the Web product at least in part by i) extracting HyperText Markup Language (HTML) contained in the Web page displayed by the target version of the Web product, wherein the extracting is performed using the HTML Document Object Model (DOM), and ii) applying a hash function to the HTML extracted from the Web page displayed by the target version of the Web product;

comparing the target hash value to a baseline hash value generated from a Web page displayed by a baseline version of the Web product, wherein a difference between the target hash value and the baseline hash value indicates a difference between a user interface of the target version of the Web product and a user interface of the baseline version of the Web product; and

in response to the comparison of the target hash value to the baseline hash value being indicative of a mismatch between the hash values,

performing a comparison of screenshots of the different versions of the Web page to identify false positive indications from the comparison of the hash values, and

generating the user interface of the target version of the Web product by modifying the Web page displayed by the target version of the Web product to cause the user interface of the target version of the Web product to match the user interface of the baseline version of the Web product.

2. The method of claim 1 , further comprising:

generating a target screenshot of the Web page displayed by the target version of the Web product; and

wherein performing the comparison of screen shots comprises, in response to detecting a difference between the target hash value and the baseline hash value,

comparing the target screenshot of the Web page displayed by the target version of the Web product to a baseline screenshot generated from the baseline version of the Web product; and

in response to detecting a difference between the target screenshot and the baseline screenshot, generating a difference notification indicating that the user interface of the target version of the Web product does not match a user interface of the baseline version of the Web product, wherein the difference notification includes a graphical indication of the difference between the target screenshot and the baseline screenshot.

3. The method of claim 2 , wherein generating the difference notification includes:

identifying a region of pixels within the target screenshot that is different from a corresponding region of pixels within the baseline screenshot;

generating a modified target screenshot at least in part based on modification of the target screenshot to visually indicate the region of pixels within the target screenshot that is different from the corresponding region of pixels within the baseline screenshot; and

storing the modified target screenshot into a screenshot repository that stores one or more modified target screenshots.

4. The method of claim 3 , further comprising displaying one or more of the modified target screenshots in a user interface, including the modified screenshot that visually indicates the region of pixels within the target screenshot that is different from the corresponding region of pixels within the baseline screenshot.

5. The method of claim 4 , further comprising generating baseline data from the baseline version of the Web product at least in part by:

generating the at least one baseline hash value from contents of a Web page displayed by the baseline version of the Web product; and

capturing the baseline screenshot by capturing a screenshot of the Web page displayed by the baseline version of the Web product.

6. The method of claim 5 , wherein the at least one baseline hash value comprises a baseline HTML hash value generated by i) extracting HyperText Markup Language (HTML) from the Web page displayed by the baseline version of the Web product and ii) applying a hash function to the HyperText Markup Language (HTML) extracted from the Web page displayed by the baseline version of the Web product; and

wherein comparing the target hash value to the baseline hash value comprises comparing the target HTML hash value to the baseline HTML hash value.

7. The method of claim 6 , wherein the at least one baseline hash value further comprises a baseline style sheet hash value generated by i) extracting at least one style sheet from the Web page displayed by the baseline version of the Web product, and ii) applying the hash function to the style sheet extracted from the Web page displayed by the baseline version of the Web product;

wherein the at least one target hash value further comprises a target style sheet hash value generated by i) extracting at least one style sheet from the Web page displayed by the target version of the Web product, and ii) applying the hash function to the style sheet extracted from the Web page displayed by the target version of the Web product; and

wherein comparing the target hash value to the baseline hash value further comprises also comparing the target style sheet hash value to the baseline style sheet hash value.

8. The method of claim 7 , wherein the at least one baseline hash value further comprises a baseline image file hash value generated by i) extracting at least one image file from the Web page displayed by the baseline version of the Web product, and ii) applying the hash function to the image file extracted from the Web page displayed by the baseline version of the Web product;

wherein the at least one target hash value further comprises a target image file hash value generated by i) extracting at least one image file from the Web page displayed by the target version of the Web product, and ii) applying the hash function to the image file extracted from the Web page displayed by the target version of the Web product; and

wherein comparing the target hash value to the baseline hash value further comprises also comparing the target image file hash value to the baseline image file hash value.

9. The method of claim 8 , wherein the at least one baseline hash value further comprises a baseline font file hash value generated by i) extracting at least one font file from the Web page displayed by the baseline version of the Web product, and ii) applying the hash function to the font file extracted from the Web page displayed by the baseline version of the Web product;

wherein the at least one target hash value further comprises a target font file hash value generated by i) extracting at least one font file from the Web page displayed by the target version of the Web product, and ii) applying the hash function to the font file extracted from the Web page displayed by the target version of the Web product; and

wherein comparing the target hash value to the baseline hash value further comprises also comparing the target font file hash value to the baseline font file hash value.

10. A system for generating a user interface of a Web product, comprising:

processing circuitry;

a memory storing program code executable on the processing circuitry, and wherein the program code, when executed by the processing circuitry, causes the processing circuitry to:

generate at least one target hash value for a target version of the Web product from contents of a Web page displayed by the target version of the Web product at least in part by i) extracting HyperText Markup Language (HTML) contained in the Web page displayed by the target version of the Web product, wherein the extracting is performed using the HTML Document Object Model (DOM), and ii) applying a hash function to the HTML extracted from the Web page displayed by the target version of the Web product,

compare the target hash value to a baseline hash value generated from a Web page displayed by a baseline version of the Web product, wherein a difference between the target hash value and the baseline hash value indicates a difference between a user interface of the target version of the Web product and a user interface of the baseline version of the Web product, and

in response to the comparison of the target hash value to the baseline hash value being indicative of a mismatch between the hash values,

perform a comparison of screenshots of the different versions of the Web page to identify false positive indications from the comparison of the hash values, and

generate the user interface of the target version of the Web product by modifying the Web page displayed by the target version of the Web product to cause the user interface of the target version of the Web product to match the user interface of the baseline version of the Web product.

11. The system of claim 10 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

generate a target screenshot of the Web page displayed by the target version of the Web product; and

wherein performance of the comparison of screen shots comprises,

in response to detection of a difference between the target hash value and the baseline hash value,

comparison of the target screenshot of the Web page displayed by the target version of the Web product to a baseline screenshot generated from the baseline version of the Web product; and

in response to detection of the difference between the target screenshot and the baseline screenshot, generate a difference notification indicating that the user interface of the target version of the Web product does not match a user interface of the baseline version of the Web product, wherein the difference notification includes a graphical indication of the difference between the target screenshot and the baseline screenshot.

12. The system of claim 11 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate the difference notification by causing the processing circuitry to:

identify a region of pixels within the target screenshot that is different from a corresponding region of pixels within the baseline screenshot;

generate a modified target screenshot at least in part based on modification of the target screenshot to visually indicate the region of pixels within the target screenshot that is different from the corresponding region of pixels within the baseline screenshot; and

store the modified target screenshot into a screenshot repository that stores one or more modified target screenshots.

13. The system of claim 12 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to display one or more of the modified target screenshots, including the modified screenshot that visually indicates the region of pixels within the target screenshot that is different from the corresponding region of pixels within the baseline screenshot.

14. The system of claim 13 , wherein the program code, when executed by the processing circuitry, causes the processing circuitry to generate baseline data from the baseline version of the Web product by causing the processing circuitry to:

generate the at least one baseline hash value from contents of a Web page displayed by the baseline version of the Web product; and

capture the baseline screenshot by capturing a screenshot of the Web page displayed by the baseline version of the Web product.

15. The system of claim 14 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate at least one baseline hash value by causing the processing circuitry to generate a baseline HTML hash value by i) extracting HyperText Markup Language (HTML) from the Web page displayed by the baseline version of the Web product and ii) applying a hash function to the HyperText Markup Language (HTML) extracted from the Web page displayed by the baseline version of the Web product;

and

wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to compare the target hash value to the baseline hash value by causing the processing circuitry to compare the target HTML hash value to the baseline HTML hash value.

16. The system of claim 15 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate at least one baseline hash value by causing the processing circuitry to generate a baseline style sheet hash value by i) extracting at least one style sheet from the Web page displayed by the baseline version of the Web product, and ii) applying the hash function to the style sheet extracted from the Web page displayed by the baseline version of the Web product;

wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate at least one target hash value by causing the processing circuitry to generate a target style sheet hash value by i) extracting at least one style sheet from the Web page displayed by the target version of the Web product, and ii) applying the hash function to the style sheet extracted from the Web page displayed by the target version of the Web product; and

wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to compare the target hash value to the baseline hash value by also comparing the target style sheet hash value to the baseline style sheet hash value.

17. The system of claim 16 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate the at least one baseline hash value by causing the processing circuitry to generate a baseline image file hash value by i) extracting at least one image file from the Web page displayed by the baseline version of the Web product, and ii) applying the hash function to the image file extracted from the Web page displayed by the baseline version of the Web product;

wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate the at least one target hash value by causing the processing circuitry to generate a target image file hash value by i) extracting at least one image file from the Web page displayed by the target version of the Web product, and ii) applying the hash function to the image file extracted from the Web page displayed by the target version of the Web product; and

wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to compare the target hash value to the baseline hash value further by also comparing the target image file hash value to the baseline image file hash value.

18. The system of claim 17 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate at least one baseline hash value by causing the processing circuitry to generate a baseline font file hash value by i) extracting at least one font file from the Web page displayed by the baseline version of the Web product, and ii) applying the hash function to the font file extracted from the Web page displayed by the baseline version of the Web product;

wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to generate at least one target hash value by causing the processing circuitry to generate a target font file hash value by i) extracting at least one font file from the Web page displayed by the target version of the Web product, and ii) applying the hash function to the font file extracted from the Web page displayed by the target version of the Web product; and

wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to compare the target hash value to the baseline hash value by also comparing the target font file hash value to the baseline font file hash value.

19. A non-transitory computer readable medium storing program code for generating a user interface of a Web product, wherein the program code, when executed by processing circuitry, causes the processing circuitry to perform a method of:

generating at least one target hash value for a target version of the Web product from contents of a Web page displayed by the target version of the Web product at least in part by i) extracting HyperText Markup Language (HTML) contained in the Web page displayed by the target version of the Web product, wherein the extracting is performed using the HTML Document Object Model (DOM), and ii) applying a hash function to the HTML extracted from the Web page displayed by the target version of the Web product;

comparing the target hash value to a baseline hash value generated from a Web page displayed by a baseline version of the Web product, wherein a difference between the target hash value and the baseline hash value indicates a difference between a user interface of the target version of the Web product and a user interface of the baseline version of the Web product; and

in response to the comparison of the target hash value to the baseline hash value being indicative of a mismatch between the hash values,

performing a comparison of screenshots of the different versions of the Web page to identify false positive indications from the comparison of the hash values, and

generating the user interface of the target version of the Web product by modifying the Web page displayed by the target version of the Web product to cause the user interface of the target version of the Web product to match the user interface of the baseline version of the Web product.

20. The non-transitory computer readable medium of claim 19 , wherein the method caused to be performed by the processing circuitry further comprises:

generating a target screenshot of the Web page displayed by the target version of the Web product;

wherein performing the comparison of screen shots comprises, in response to detecting a difference between the target hash value and the baseline hash value,

comparing the target screenshot of the Web page displayed by the target version of the Web product to a baseline screenshot generated from the baseline version of the Web product; and

in response to detecting a difference between the target screenshot and the baseline screenshot, generating a difference notification indicating that the user interface of the target version of the Web product does not match a user interface of the baseline version of the Web product, wherein the difference notification includes a graphical indication of the difference between the target screenshot and the baseline screenshot.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2019
From: LIU, XIN; OU, YURAN; XIAO, TIANYU
To: CITRIX SYSTEMS, INC.
Reel/Frame 050482/0032 →
Continuity (1)
Related Publication 20200394235A1 · Dec 17, 2020
Cited By (3)
US 12,399,820 US 12,481,498 US 12,487,924