2016-12-22 7 views
13

के बाद समाप्त करने के लिए के लिए मैं अंत करने के लिए अंत करने के लिए चांदा का उपयोग कर हमारे कोणीय 2 आवेदन का परीक्षण करना चाहते हैं, लेकिन मैं संदेश के साथ अटक कर रहा हूँ:विफल: समय खत्म हो गया अतुल्यकालिक कोणीय कार्य 11 सेकंड

"Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds." 

मेरी conf फ़ाइल।

exports.config = { 
    directConnect: true, 
    specs: ['spec.js'], 

    // For angular2 tests 
    useAllAngular2AppRoots: true, 
} 

क्रोम खोला गया है, और वेबसाइट भी खोली गई है, तो टाइमआउट तक कुछ भी नहीं होता है।

सिंक्रनाइज़ेशन को अक्षम करते समय (browser.ignore सिंक्रनाइज़ेशन = सत्य का उपयोग करके), यह ठीक है। लेकिन मैं प्रोटैक्टर का उपयोग करने के मुख्य फायदों में से एक "स्वचालित प्रतीक्षा" सुविधा खो रहा हूं।

एप्लिकेशन पूरी तरह से कोणीय 2 पर आधारित है। तो यह क्यों काम नहीं करता है?

हमारे डेवलपर्स ने मुझे बताया कि हम मतदान नहीं कर रहे हैं (Protractor documentation के अनुसार संभावित कारणों में से एक)। वैसे, हम websocket आर्किटेक्चर का उपयोग कर रहे हैं। मुझे नहीं पता कि कोई लिंक है या नहीं।

दरअसल, मुझे नहीं पता कि इस समस्या का निवारण कैसे करें।

कोई मदद कर सकता है, कृपया?

+0

[कोणमापक एक बूटस्ट्रैप मोडल का परीक्षण - कोणीय नहीं पेज - समय समाप्त] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/ 40817733/protractor-test-a-bootstrap-modal-not-angular-page-timeout) –

+0

क्या आप समाधान से नीचे आज़मा सकते हैं और जांच सकते हैं कि यह काम करता है या नहीं – AdityaReddy

उत्तर

6

आपका अनुमान सही है। यह त्रुटि तब होती है जब आपके कोणीय 2 अनुप्रयोग में चल रहे किसी भी उत्कृष्ट कार्य होते हैं।

हां, सबसे आम कारण यह है कि जब एप्लिकेशन लगातार $ टाइमआउट या $ http का चुनाव करता है, तो प्रोट्रैक्टर अनिश्चित काल तक और समय समाप्त हो जाएगा। लेकिन यह भी स्थितियों में हो सकता है जहां अनुप्रयोग अलग समय समाप्ति

डिफ़ॉल्ट टाइमआउट मान 11 सेकंड है पर एक से अधिक 11 सेकंड

अधिक जानकारी के लिए here देखें लेता है। आप config.js में नीचे मूल्य समायोजित करके इसे बदल सकते हैं और कोशिश करते हैं और देखते हैं अगर आप अभी भी इस मुद्दे को देख रहे हैं

/** 
    * The timeout in milliseconds for each script run on the browser. This 
    * should be longer than the maximum time your application needs to 
    * stabilize between tasks. 
    */ 
    allScriptsTimeout?: number; 
2

अस्थायी रूप से सक्षम करने browser.ignoreSynchronization यह ठीक करता है, के रूप में एक जवाब here में सूचना दी।

browser.ignoreSynchronization = true; 

(कोड कि त्रुटि फेंकता)

browser.ignoreSynchronization = false; 
1

परीक्षण का मामला संशोधित करें और पहले क्लिक के बाद browser.waitForAngularEnabled(false); शब्दों में कहें, काम करना चाहिए।

हालांकि, की सिफारिश की विधि allScriptsTimeout: 110000 के रूप में अपने conf.js फ़ाइल में डिफ़ॉल्ट टाइमआउट अधिभावी किया जा सकता है

संबंधित मुद्दे