संक्षिप्त उत्तर

आप कोई वर्कफ़्लो फ़ाइल नहीं जोड़ते, और आप कोई ऐसी स्क्रिप्ट नहीं लिखते जो आपके बिल्ड लॉग्स से प्रीव्यू URL निकाले। TestSprite एक GitHub App के रूप में इंस्टॉल होता है, आपकी पाइपलाइन द्वारा पहले से जनरेट किए गए डिप्लॉयमेंट इवेंट को सुनता है, आपके द्वारा एक बार परिभाषित पैटर्न से प्रीव्यू URL निकालता है, उसके विरुद्ध आपके टेस्ट्स चलाता है, और परिणाम को पुल रिक्वेस्ट पर कमेंट के रूप में वापस पोस्ट करता है।

सेटअप में लगभग दस मिनट लगते हैं, GitHub App इंस्टॉल करने के लिए एडमिन अधिकार चाहिए, और आपकी रिपॉज़िटरी में कोई बदलाव आवश्यक नहीं

आपकी पाइपलाइन डिप्लॉय करती है

Vercel पुल रिक्वेस्ट बिल्ड करता है और GitHub में एक डिप्लॉयमेंट इवेंट जनरेट करता है। TestSprite खुद कुछ भी बिल्ड या डिप्लॉय नहीं करता।

TestSprite इवेंट सुनता है

GitHub App इसे प्राप्त करता है, आपके पैटर्न से टारगेट URL निकालता है, और रन शुरू करता है।

परिणाम PR पर आते हैं

पास/फेल गिनती, फेल हुए स्टेप्स, स्क्रीनशॉट्स, और एक फ़िक्स प्रॉम्प्ट के साथ एक कमेंट — साथ ही एक वैकल्पिक आवश्यक चेक जो मर्ज को ब्लॉक करता है।

पूर्व-आवश्यकता: पुष्टि करें कि पुल रिक्वेस्ट एक डिप्लॉयमेंट जनरेट करता है

TestSprite एक डिप्लॉयमेंट इवेंट पर ट्रिगर होता है, इसलिए बाकी सब कुछ काम करने से पहले वह इवेंट मौजूद होना चाहिए। कोई भी मौजूदा पुल रिक्वेस्ट खोलें और पुष्टि करें कि एक क्लिक करने योग्य URL के साथ एक डिप्लॉयमेंट सूचीबद्ध है, फिर वह URL खोलें और जांचें कि प्रीव्यू एनवायरनमेंट वास्तव में लोड होता है।

Vercel पर यह पुल रिक्वेस्ट पर एक बॉट कमेंट के रूप में दिखाई देता है जो प्रोजेक्ट, एक Ready स्टेटस, और प्रीव्यू का लिंक सूचीबद्ध करता है। AWS Amplify, Netlify, और सेल्फ़-होस्टेड पाइपलाइनें जो GitHub डिप्लॉयमेंट बनाती हैं, सभी अपने ही फ़ॉर्मेट में यही सिग्नल जनरेट करती हैं — जो मायने रखता है वह है कि एक डिप्लॉयमेंट मौजूद है और उसका URL पहुंच योग्य है।

अगर आपके पुल रिक्वेस्ट पर कोई डिप्लॉयमेंट नहीं दिखता, तो यहीं रुकें और पहले अपनी CI/CD पाइपलाइन ठीक करें। जब तक कोई डिप्लॉयमेंट इवेंट मौजूद नहीं है, TestSprite के पास सुनने के लिए कुछ नहीं है।

चरण 1 — GitHub को अपने वर्कस्पेस से कनेक्ट करें

यह प्रति वर्कस्पेस एक बार का सेटअप है। TestSprite में, Workspace Settings → Integrations पर जाएँ, GitHub रो ढूंढें, और Connect पर क्लिक करें। आपको उस संगठन या व्यक्तिगत खाते को चुनने के लिए GitHub पर रीडायरेक्ट किया जाएगा जो रिपॉज़िटरी का मालिक है, फिर All repositories या Only select repositories चुनें और Install & Authorize पर क्लिक करें।

अनुमोदन से पहले यह जानना उचित है कि कौन-सी अनुमतियां मांगी जा रही हैं:

AccessScopes
ReadActions, checks, issues, metadata
Read and writeCode, commit statuses, deployments, pull requests

राइट एक्सेस का उपयोग टेस्ट परिणामों को आपके पुल रिक्वेस्ट्स और कमिट्स पर वापस पोस्ट करने के लिए किया जाता है। TestSprite कोई कमिट पुश नहीं करता या आपकी वर्कफ़्लो फ़ाइलों को संशोधित नहीं करता। अगर इंस्टॉलेशन के दौरान आपका संगठन सूचीबद्ध नहीं है, तो आपके पास उसके लिए GitHub Apps इंस्टॉल करने की अनुमति नहीं है — एक संगठन मालिक को इसे अनुमोदित करना होगा।

चरण 2 — रिपॉज़िटरी को एक प्रोजेक्ट से कनेक्ट करें

वह TestSprite प्रोजेक्ट खोलें जिसे आप कनेक्ट करना चाहते हैं, GitHub Action टैब पर जाएँ, और Connect GitHub Action पर क्लिक करें। फिर चुनें कि टेस्ट कैसे ट्रिगर होने चाहिए:

TriggerBest forWhere results appear
Pull requestमर्ज से पहले रिग्रेशन पकड़नापुल रिक्वेस्ट पर एक कमेंट
Push to branchहर मर्ज के बाद staging या dev जैसे साझा एनवायरनमेंट को टेस्ट करनाकमिट पर एक चेक

शुरू करने के लिए एक ट्रिगर काफी है। आप दोनों बना सकते हैं — वे एक-दूसरे से स्वतंत्र रूप से चलते हैं।

चरण 3 — वह इवेंट चुनें जिसका मतलब है "डिप्लॉयमेंट पूरा हुआ"

Pull Request टैब चुनें, किसी मौजूदा पुल रिक्वेस्ट का URL पेस्ट करें जिसमें एक काम कर रहा प्रीव्यू डिप्लॉयमेंट हो, और Detect Events पर क्लिक करें। TestSprite उस पुल रिक्वेस्ट पर पाए गए CI/CD इवेंट्स सूचीबद्ध करता है — GitHub Actions चेक्स, Vercel या Amplify से बॉट कमेंट्स, वर्कफ़्लो रन्स — और आप चुनते हैं कि कौन-सा रन शुरू करेगा।

वह इवेंट चुनें जो डिप्लॉयमेंट लाइव होने और URL पहुंच योग्य होने के बाद फ़ायर होता है। सेटअप को गलत करने का यह सबसे आम तरीका है: एक इवेंट जो बिल्ड-स्टार्ट पर फ़ायर होता है वह आपके टेस्ट्स को एक ऐसे URL के विरुद्ध चलाएगा जो अभी तैयार नहीं है, और हर टेस्ट फेल हो जाएगा।

चरण 4 — टारगेट URL पैटर्न भरें

हर होस्टिंग प्रोवाइडर प्रीव्यू URLs को अलग तरीके से नाम देता है, इसलिए आप TestSprite को बताते हैं कि किसी भी दिए गए पुल रिक्वेस्ट के लिए URL कैसे बनाया जाए। पांच प्लेसहोल्डर्स उपलब्ध हैं:

PlaceholderResolves to
{pr}पुल रिक्वेस्ट नंबर
{branch}ब्रांच का नाम
{branch-slug}ब्रांच का नाम, URL-सुरक्षित
{sha}पूरा कमिट SHA
{short-sha}छोटा किया गया कमिट SHA

पैटर्न को एक वास्तविक प्रीव्यू URL के विरुद्ध, अक्षर-दर-अक्षर मिलाएँ:

Your preview URLs look likeEnter this pattern
https://app-git-login-fix-team.vercel.apphttps://app-git-{branch-slug}-team.vercel.app
https://pr-123.example.comhttps://pr-{pr}.example.com

Vercel के डिफ़ॉल्ट प्रीव्यू होस्टनेम ब्रांच से बनाए जाते हैं, यही कारण है कि वहां आमतौर पर {pr} के बजाय {branch-slug} सही प्लेसहोल्डर होता है। अगर आपका होस्ट ऐसे रैंडम सबडोमेन जनरेट करता है जिनमें कुछ भी अनुमानित नहीं है, तो प्रीव्यू एनवायरनमेंट के लिए एक स्थिर अलियास URL कॉन्फ़िगर करें और उसका उपयोग करें।

पुश ट्रिगर को किसी पैटर्न की बिल्कुल ज़रूरत नहीं है — यह उस TestSprite एनवायरनमेंट के कॉन्फ़िगर किए गए URL के विरुद्ध चलता है जिसे आप चुनते हैं, इसलिए dev के लिए Dev और main के लिए Production चुनें।

चरण 5 — सेव करने से पहले एक टेस्ट इवेंट भेजें

Send Test Event पर क्लिक करें। यह आपके टेस्ट्स को सैंपल पुल रिक्वेस्ट के विरुद्ध बिल्कुल वैसे ही चलाता है जैसे एक वास्तविक ट्रिगर करता, ताकि आप इसे अपनाने से पहले पूरे फ़्लो का पूर्वावलोकन कर सकें। लगभग 30 सेकंड प्रतीक्षा करें, फिर GitHub पर पुल रिक्वेस्ट पर वापस जाएँ — एक TestSprite कमेंट दिखाई देता है।

आगे बढ़ने से पहले उस कमेंट में मौजूद URL को खोलें। पुष्टि करें कि यह पहुंच योग्य है और उस एनवायरनमेंट की ओर इशारा करता है जिसकी आप उम्मीद करते हैं। अगर यह गलत है, तो पैटर्न को सही करें और अगले पुल रिक्वेस्ट का इंतज़ार करने के बजाय एक और टेस्ट इवेंट भेजें। रन पूरा होने पर, TestSprite उसी कमेंट को परिणाम के साथ अपडेट करता है।

जब टेस्ट इवेंट सही दिखे, तो Create Trigger पर क्लिक करें। यह Triggers सूची में Active चिह्नित होकर दिखाई देता है और हर भविष्य के पुल रिक्वेस्ट पर स्वचालित रूप से चलता है। दो वैकल्पिक टॉगल्स को जानबूझकर सेट करना उचित है:

ToggleWhat it does
Include draft PRsरेडी-फ़ॉर-रिव्यू पुल रिक्वेस्ट्स के साथ-साथ ड्राफ़्ट पुल रिक्वेस्ट्स पर भी टेस्ट चलाता है
Block PR until tests passTestSprite चेक को आवश्यक बनाता है, ताकि टेस्ट फेल होने के दौरान मर्ज ब्लॉक हो जाएं

अगर आपका प्रीव्यू Deployment Protection के पीछे है

यह वह फेल्योर मोड है जो एक सफल सेटअप जैसा दिखता है। Vercel के Deployment Protection सक्षम होने पर, हर प्रीव्यू URL एक ऑथेंटिकेशन दीवार के पीछे होता है, और एक बाहरी टेस्टर को आपके एप्लिकेशन के बजाय लॉगिन पेज मिलता है। टेस्ट एरर नहीं करते — वे एक ऐसे पेज का वर्णन करते हैं जिसकी किसी को उम्मीद नहीं थी।

चरण 5 में मौजूद जांच इसे पकड़ लेती है: TestSprite कमेंट से URL को एक प्राइवेट विंडो में खोलें। अगर आपको Vercel लॉगिन स्क्रीन दिखती है, तो प्रोटेक्शन चालू है। आगे बढ़ने के दो तरीके हैं — प्रीव्यू एनवायरनमेंट के लिए प्रोटेक्शन को अक्षम करें, या Vercel के Protection Bypass for Automation का उपयोग करें, जो एक सीक्रेट जनरेट करता है जिसे Vercel एक हेडर के साथ-साथ एक x-vercel-protection-bypass क्वेरी पैरामीटर के रूप में भी स्वीकार करता है। क्योंकि टारगेट URL पैटर्न बस एक URL है, क्वेरी-पैरामीटर वाला रूप इसमें जोड़ा जा सकता है:

https://app-git-{branch-slug}-team.vercel.app?x-vercel-protection-bypass=YOUR_SECRET

सीक्रेट को Project Settings → Deployment Protection → Protection Bypass for Automation के तहत जनरेट करें। इसके बारे में जानबूझकर सावधान रहें — यह एक सेटिंग्स फ़ील्ड में एक बायपास सीक्रेट स्टोर करता है, इसलिए प्रीव्यू एनवायरनमेंट पर प्रोटेक्शन को अक्षम करना अधिक साफ़ विकल्प है जब आपके प्रीव्यूज़ में कुछ भी संवेदनशील न हो।

परिणाम पढ़ना

जब एक रन पूरा होता है, TestSprite अपने पुल रिक्वेस्ट कमेंट — या कमिट चेक — को परिणाम के साथ अपडेट करता है। कमेंट संरचित होता है, और अगर कोड किसी AI एजेंट ने लिखा है तो सबसे मायने रखने वाली रो आख़िरी होती है:

SectionWhat it tells you
Headline resultकितने टेस्ट पास हुए, फेल हुए, और ब्लॉक हुए
Quality scoreआपके सुइट के एग्ज़ीक्यूटेबल सबसेट पर गणना की जाती है। ब्लॉक हुए केसेस को बाहर रखा जाता है और अलग से रिपोर्ट किया जाता है, क्योंकि वे आमतौर पर प्रोडक्ट रिग्रेशन के बजाय एक टेस्ट-एनवायरनमेंट गैप का संकेत देते हैं
Failed testsहर फेल्योर विस्तार में दिखाता है कि क्या अपेक्षित था, क्या देखा गया, और फेल्योर के क्षण का एक स्क्रीनशॉट
Suggested fix promptसंभावित मूल कारण और फ़िक्स का वर्णन करने वाला एक तुरंत-कॉपी करने योग्य प्रॉम्प्ट, जिसे सीधे आपके AI कोडिंग एजेंट में पेस्ट करने के लिए बनाया गया है

हर परिणाम TestSprite में पूरी रिपोर्ट से वापस लिंक होता है।

अपना सेटअप वेरिफ़ाई करें

इंटीग्रेशन पर भरोसा करने से पहले, इन सभी पांच की पुष्टि करें:

  1. आपके वर्कस्पेस में GitHub इंटीग्रेशन Connected दिखाता है

  2. प्रोजेक्ट के GitHub Action टैब के अंदर रिपॉज़िटरी दिखाई देती है

  3. एक ट्रिगर सूचीबद्ध है और सक्षम है

  4. एक टेस्ट इवेंट ने एक TestSprite कमेंट (पुल रिक्वेस्ट) या चेक (पुश) जनरेट किया

  5. उस कमेंट या चेक में मौजूद URL सही डिप्लॉय किए गए एनवायरनमेंट को खोलता है

समस्या निवारण

हर टेस्ट फेल होता है और URL लोड नहीं होता

ट्रिगर बहुत जल्दी फ़ायर हो रहा है — deployment-complete इवेंट के बजाय build-start या workflow-start इवेंट पर। ट्रिगर को एडिट करें और एक ऐसा इवेंट चुनें जो एनवायरनमेंट के लाइव होने के बाद फ़ायर होता है।

कमेंट गलत URL दिखाता है

URL पैटर्न को एक वास्तविक प्रीव्यू URL के विरुद्ध अक्षर-दर-अक्षर जांचें। अगले पुल रिक्वेस्ट का इंतज़ार करने के बजाय हर बदलाव के बाद एक और टेस्ट इवेंट भेजें।

Detect Events पर कोई इवेंट नहीं दिखता

पुल रिक्वेस्ट या ब्रांच में कोई CI/CD इवेंट रिकॉर्ड नहीं है, या GitHub App के पास उस रिपॉज़िटरी तक पहुंच नहीं है। पुष्टि करें कि रिपॉज़िटरी ऐप इंस्टॉलेशन में शामिल है।

टेस्ट एक पुराने एनवायरनमेंट के विरुद्ध चलते हैं

पुष्टि करें कि चुना गया इवेंट उस डिप्लॉयमेंट से मेल खाता है जिसे आप टेस्ट करना चाहते हैं। अगर एक ब्रांच में कई एनवायरनमेंट हैं, तो सत्यापित करें कि Environment to test चयन मेल खाता है।

संगठन सूचीबद्ध नहीं है

आपके पास उसके लिए GitHub Apps इंस्टॉल करने की अनुमति नहीं है। एक संगठन मालिक से इंस्टॉलेशन अनुमोदित करने के लिए कहें, फिर चरण 1 पर वापस जाएँ।

टेस्ट पास होते हैं लेकिन ऐप टूटा हुआ है

जांचें कि प्रीव्यू URL ने वास्तव में क्या सर्व किया। एक प्रोटेक्टेड प्रीव्यू एक लॉगिन पेज लौटाता है जिसका एक टेस्ट बिना फेल हुए वर्णन कर सकता है।

कमांड-लाइन विकल्प

जब आपकी पाइपलाइन पहले से ही डिप्लॉयमेंट्स जनरेट करती है, तो GitHub App सही जवाब है। अगर आप अपने ही वर्कफ़्लो से रन चलाना पसंद करेंगे — या आप GitHub पर बिल्कुल नहीं हैं — तो ओपन-सोर्स TestSprite CLI किसी भी CI सिस्टम से वही काम करता है। यह इंस्टॉल करने के लिए मुफ़्त और Apache-2.0 लाइसेंस्ड है:

npm install -g @testsprite/testsprite-cli
testsprite setup

एक प्रोजेक्ट को उस URL पर पॉइंट करें जिसे आपने पहले ही रिज़ॉल्व कर लिया है, और सुइट को एक फ़ैसले तक चलाएँ:

testsprite project update prj_abc123 --url "$PREVIEW_URL"
testsprite test run --all --project prj_abc123 --wait --output json
#   exit 0 = everything passed, exit 1 = something is broken

testsprite ci init github इस पथ के लिए एक वर्कफ़्लो तैयार करता है, और CLI को एनवायरनमेंट में केवल TESTSPRITE_API_KEY की ज़रूरत होती है, इसलिए यह उतनी ही आसानी से CircleCI, GitLab, Jenkins, या Azure Pipelines में फ़िट हो जाता है। उन सिस्टमों द्वारा नेटिव रूप से इनजेस्ट किए जाने वाले साइडकार के लिए --report junit --report-file <path> का उपयोग करें।

अगर जिन फ़्लोज़ की आपको परवाह है वे आपके एप्लिकेशन के अपने लॉगिन के पीछे रहते हैं, तो प्रोजेक्ट पर एक टेस्ट अकाउंट स्टोर करें ताकि रन्स ऑथेंटिकेट कर सकें। दोनों फ़्लैग्स एक साथ आवश्यक हैं:

testsprite project update prj_abc123 \
  --username qa@example.com \
  --password-file ./.secrets/qa-password

अक्सर पूछे जाने वाले प्रश्न

क्या मुझे अपनी रिपॉज़िटरी में एक वर्कफ़्लो फ़ाइल जोड़ने की ज़रूरत है?

नहीं। इंटीग्रेशन पूरी तरह से TestSprite में कॉन्फ़िगर किया जाता है, और आपकी रिपॉज़िटरी में कोई बदलाव आवश्यक नहीं है।

क्या यह मेरे मौजूदा GitHub Actions वर्कफ़्लो की जगह लेता है?

नहीं। TestSprite उन इवेंट्स को सुनता है जो आपका वर्कफ़्लो पहले से जनरेट करता है — यह आपकी पाइपलाइन को संशोधित या प्रतिस्थापित नहीं करता।

कौन-से होस्टिंग प्रोवाइडर्स समर्थित हैं?

कोई भी प्रोवाइडर जो GitHub को एक डिप्लॉयमेंट रिपोर्ट करता है और एक पहुंच योग्य URL एक्सपोज़ करता है, जिसमें Vercel, AWS Amplify, Netlify, और सेल्फ़-होस्टेड पाइपलाइनें शामिल हैं जो GitHub डिप्लॉयमेंट बनाती हैं।

क्या मेरे पास पुल रिक्वेस्ट ट्रिगर और पुश ट्रिगर दोनों हो सकते हैं?

हां। उन्हें अलग-अलग बनाएँ — वे एक-दूसरे से स्वतंत्र रूप से चलते हैं।

अगर मेरे प्रीव्यू URLs में पुल रिक्वेस्ट नंबर शामिल नहीं है तो क्या होगा?

URL पैटर्न फ़ील्ड एक अनुमानित पैटर्न की अपेक्षा करती है। Vercel के डिफ़ॉल्ट होस्टनेम ब्रांच से बनाए जाते हैं, इसलिए आमतौर पर {branch-slug} सही प्लेसहोल्डर होता है। अगर आपका होस्ट रैंडम सबडोमेन जनरेट करता है, तो प्रीव्यू एनवायरनमेंट के लिए एक स्थिर अलियास URL कॉन्फ़िगर करें और उसका उपयोग करें।

क्या परिणाम सीधे मेरे AI कोडिंग एजेंट में जा सकता है?

हां — कमेंट का Suggested fix prompt सेक्शन इसी के लिए है। यह संभावित मूल कारण और फ़िक्स का वर्णन करने वाला एक तुरंत-कॉपी करने योग्य प्रॉम्प्ट है, जिसे एक कोडिंग एजेंट में पेस्ट करने के लिए लिखा गया है। एक पूर्ण लूप के लिए, testsprite setup --agent claude एक वेरिफ़िकेशन स्किल इंस्टॉल करता है ताकि एजेंट खुद टेस्ट बना, चला, और ट्राइएज कर सके।

सेटअप में कितना समय लगता है?

लगभग दस मिनट, और आपको उस संगठन पर GitHub App इंस्टॉल करने के लिए एडमिन अधिकार चाहिए जो रिपॉज़िटरी का मालिक है।

// फ़ैसला

आपकी पाइपलाइन पहले से ही सिग्नल भेजती है। उसे सुनें।

प्रीव्यू डिप्लॉयमेंट को टेस्ट करने के लिए किसी नई वर्कफ़्लो फ़ाइल, बिल्ड लॉग्स को स्क्रैप करने वाली स्क्रिप्ट, या URL के लिए प्रतीक्षा करने वाली किसी थर्ड-पार्टी एक्शन की ज़रूरत नहीं है। आपकी पाइपलाइन पहले से एक डिप्लॉयमेंट इवेंट जनरेट करती है; काम यह है TestSprite को बताना कि कौन-सा इवेंट "लाइव" का मतलब है और उससे URL कैसे बनाया जाए। दस मिनट, कोई रिपॉज़िटरी बदलाव नहीं, और हर पुल रिक्वेस्ट किसी इंसान के देखने से पहले एक वास्तविक ब्राउज़र के विरुद्ध जांचा जाता है। कमांड-लाइन पथ के लिए, docs.testsprite.com पर संदर्भ पढ़ें और GitHub पर ओपन-सोर्स CLI को स्टार करें।