diff options
Diffstat (limited to 'files/bn/archive/b2g_os/automated_testing')
15 files changed, 0 insertions, 1369 deletions
diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/index.html deleted file mode 100644 index 7c5d8e5d6e..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Gaia UI Tests পরিচিতি -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests -tags: - - B2G - - Build documentation - - Firefox OS - - Gaia - - Guide - - Mobile - - NeedsTranslation - - Testing - - TopicStub - - gaia-ui-test - - gaiatest -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests ---- -<p>{{Next("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start")}}</p> - -<div class="summary"> -<p>Gaia-ui-tests is Mozilla's test suite for running end-to-end UI test cases against Gaia, the UI of Firefox OS. All the tests are written in Python with some JavaScript used for interacting with Firefox OS's APIs. This set of tutorial articles explains how to set up the environment to write and run tests.</p> -</div> - -<p>Gaia-ui-tests uses <strong>Gaiatest</strong>, a Python package based around <a href="https://developer.mozilla.org/en-US/docs/Marionette" title="https://developer.mozilla.org/en-US/docs/Marionette">Marionette</a>. Gaiatest is designed to wrap HTML locators, Marionette calls and API calls together for interoperble communication and functionality. Marionette is based on the W3C standard developed for the <a href="http://docs.seleniumhq.org/projects/webdriver/" title="http://docs.seleniumhq.org/projects/webdriver/">Selenium WebDriver</a> a programming interface for browser automation. If you have used WebDriver and page/app objects before then you will find using Marionette and gaiatest easy.</p> - -<h2 id="Getting_started_with_Gaia_UI_tests">Getting started with Gaia UI tests</h2> - -<p>For those keen to get started with automated testing on Gaia/Firefox OS we have a tutorial series that will help you go from nothing to writing your own tests. Once you've completed this tutorial you'll have enough knowledge of testing, Firefox OS and Marionette to get started as a Mozilla tests contributor. It is <strong>highly</strong> recommended that you complete this tutorial if you wish to become a contributor.</p> - -<dl> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start">Part 1: Getting started with Marionette and Firefox OS</a></dt> - <dd>This article covers installing the tools you need to get started with running tests, such as B2G Desktop, Python and Marionette.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions">Part 2: Basic interactions with Firefox OS using Marionette</a></dt> - <dd>An overview of the basic commands you will use to manipulate Firefox OS via Marionette.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests">Part 3: Upgrading our code into a reusable test</a></dt> - <dd>Moving on, in this article we will assemble some basic commands into a simple test inside a Python file so they can all be run as a single entity.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup">Part 4: Re-using commands to set up Firefox OS</a></dt> - <dd>Here we look at moving some of the commands into Python methods to promote code reuse.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner">Part 5: Introducing a test runner</a></dt> - <dd>A test runner is a central feature of any good test suite, allowing you to run multiple tests and report and aggregate results. In this article we will explore the basics of Python's unittest runner.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_6_Marionette_By_class">Part 6: Using tuples, and Marionette's By class</a></dt> - <dd>This time around we explain how to further reduce duplication of code, by storing repeated locators in tuples and simplifying the syntax with Marionette's <code>By</code> class.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests">Part 7: Writing your own tests</a></dt> - <dd>Now the basics and behind you, and it is time to start to writing your own tests! Here we give you some tool recommendations to make the work easier, and suggest some tests to try your hand at writing.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class">Part 8: Using a base class</a></dt> - <dd>In its current state, our test file contains all the test runner code. This is ok for now, but as soon as you start to run many test files it will mean a lot of duplication. Here we solve this problem by abstracting the test runner code into a separate Python class.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_9_app_objects">Part 9: Reducing duplication with app objects</a></dt> - <dd>As a final improvement to the code's maintainability, in this article we explore abstracting code that handles interaction with specific Firefox OS apps out into Python app objects.</dd> -</dl> - -<h2 id="Advanced_topics">Advanced topics</h2> - -<p>One you've got the basics of writing and running tests under your belt, you way want to move on to some more involved or advanced work, such as running the full gaia-ui-tests tests suite, or logging power draw as the result of a test.</p> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests" title="Gaia UI Tests Run Tests">Running the gaia-ui-tests</a></dt> - <dd>Guides to running the gaia-ui-tests suite against real Firefox OS devices and <a href="/en-US/Firefox_OS/Using_the_B2G_desktop_client">B2G Desktop</a> in a variety of configurations.</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Gathering_power_draw_data_using_gaiatest">Gathering Power Draw</a></dt> - <dd>How to use gaiatest to log power draw while a test is running.</dd> -</dl> - -<h2 id="See_also">See also</h2> - -<p><a href="https://github.com/mozilla-b2g/gaia/tree/master/tests/python/gaia-ui-tests">Gaia-ui-tests main repository</a></p> - -<h2 id="QuestionsCommentsConcerns"><span class="mw-headline" id="Questions.2FComments.2FConcerns">Questions/Comments/Concerns </span></h2> - -<p>This project is at a fairly early stage, and your feedback would be greatly appreciated:</p> - -<ul> - <li>Send mails to the <a href="http://mailto:_gaia-ui-automation@mozilla.org">gaia-ui-automation@mozilla.org</a> list.</li> - <li>Alternatively, find us on <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a> at channels #ateam, #mozwebqa, and #moztpeqa.</li> -</ul> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_1_marionette_firefox_os_start/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_1_marionette_firefox_os_start/index.html deleted file mode 100644 index fa10ed1eab..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_1_marionette_firefox_os_start/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: প্রথম অংশঃ ম্যারিওনেট এবং ফায়ারফক্স OS দিয়ে শুরু করা -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start -tags: - - needs review -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions")}}</p> -<div class="summary"> - <p><span class="seoSummary">এই টিউটোরিয়াল সিরিজটির উদ্দেশ্য হল ফাইয়ারফক্স OS ব্যবহৃত ম্যারিওনেটের জন্য লেখা ও রান সংক্রান্ত অটোনোমেটেড UI টেস্টের সাথে আপনাকে পরিচিত করা। ম্যারিওনেট Getko-ভিত্তিক প্ল্যাটফর্মে টেস্ট রান করানোর জন্য কমান্ড ইস্যু করে। </span></p> -</div> -<p>এই টিউটোরিয়াল সিরিজটি আটোমেটেড টেস্টিং কনসেপ্টের মধ্যে দিয়ে এগোবে এবং আপনাকে ফায়ারফক্স OS (বিশেষ প্রয়োজনীয় <a href="/en-US/Firefox_OS/Using_the_B2G_desktop_client">B2G ডেক্সটপ</a> টেস্টিং টুলসহ) এবং ম্যারিওনেটএর সাথে কাজ করতেও পরিচিত করে। মাঝে মাঝে আমরা চ্যালেঞ্জ আহবান করব আপনার সমস্যার সমাধান বের করতে আপনাকে অনুপ্রাণিত করার জন্য।</p> -<div class="note"> - <p>নোটঃ এই টিউটোরিয়লটি শুধুমাত্র মজিলা পণ্যের জন্য নির্দিষ্ট নয়; যেমনঃ আপনি যদি কোন HTML5 অ্যাপ ডেভলপ করতে থাকেন তবে কোন টেস্ট ফ্রেমওয়ার্কের জন্যও আপনি এই টিউটোরিয়ালটি ব্যবহার করতে পারেন।</p> -</div> -<h2 id="এই_টিউটোরিয়ালটির_জন্য_প্রয়োজনীয়_সফটওয়্যার">এই টিউটোরিয়ালটির জন্য প্রয়োজনীয় সফটওয়্যার</h2> -<p>টিউটোরিয়ালের সময় আমরা এই সফটওয়্যারগুলো ইন্সটল এবং ব্যবহার করবঃ</p> -<ul> - <li>পাইথন 2.7</li> - <li>পিপ ইন্সটলার</li> - <li>কোড লেখার জন্য টেক্সট এডিটর অথবা IDE</li> - <li>Boot2Gecko ডেক্সটপ ক্লাইন্ট (ফায়ারফক্স OS)</li> - <li>ম্যারিওনেট ক্লাইন্ট(OSএর জন্য ওয়েব ড্রাইভার )</li> -</ul> -<h2 id="পাইথন_এবং_পিপ">পাইথন এবং পিপ</h2> -<p>লিনাক্সের মত কিছু অপারেটিং সিস্টেমে পাইথন প্রি-ইন্সটল করা থাকে। ইন্সটল করার আগে দেখে নিন, তা আগে থেকেই ইন্সটল করা আছে কিনা। কোন কমান্ড লাইন অথবা টার্মিনাল থেকে রান করানঃ</p> -<pre class="brush: bash">python --version</pre> -<p>পাইথন 2.6.x অথবা 2.7.x এর যে কোন ভার্শনই এই টিউটোরিয়ালের জন্য চলবে। আপনার যদি পাইথন 2.7 ইন্সটল না করা থেকে থাকে তবে আপনি <a href="https://www.python.org/download/releases/2.7.6/">পাইথন রিলিজ সাইট</a> এ আপনি ইন্সটলার পাবেন।</p> -<p>পিপ ব্যবহৃত হয় পাইথন টুলস ইন্সটল করার জন্য এবং ম্যারিনেট ইন্সটল করার জন্য আমাদের এটি দরকার হয়। আপনি নিরীক্ষা করে দেখতে পারেন আপনার টার্মিনাল বা কমান্ড লাইনে পিপ টাইপিনের মাধ্যমে ইন্সটল হয়েছে কিনা। পিপ ইন্সটল করার জন্য, <a href="http://pip.readthedocs.org/en/latest/installing.html">পিপ ডকুমেন্টেশনের</a> নির্দেশনা অনুসরণ করতে পারেন।<br> - </p> -<h2 id="B2G_ডেক্সটপ">B2G ডেক্সটপ</h2> -<p>B2G ডেক্সটপ ক্লাইন্ট আপনাকে সুযোগ দেয় ডেক্সটপ অথবা ল্যাপটপ কম্পিউটারে Gaia — ফায়ারফক্স OS এর UI — এবং ফায়ারফক্স OS অ্যাপস রান করার করানোর। ডেক্সটপ ক্লাইন্টের বেশ কিছু সীমাব্ধতা আছে — ক্যামেরা, ব্যাটারি প্রভৃতির মত হার্ডওয়্যার ডিভাইসকে emulate করে না— কিন্তু এই টিউটোরিয়ালে আমাদের কাজের জন্য এটি যথাযথ হবে। এবার এটি ইন্সটল করে নেওয়া যাক।</p> -<p><a href="http://nightly.mozilla.org/">ফায়ারফক্স নাইটলি সাইট</a> থেকে সর্বশেষ B2G ডেক্সটপ ডাউনলোড করুন (একদম নিচে ডেক্সটপ Boot2Gecko দেখুন)। B2G ডেক্সটপ ডাউনলোড হয়ে গেলে, কনটেন্টগুলো আপনার কম্পিউটারে একটি ফোল্ডারে এক্সাক্ট করে রাখুন। ফায়ারফক্স OS সিমালটার স্টার্ট করার জন্য আপনার OS এর জন্য সঠিকভাবে<strong> b2g</strong> স্ক্রিপ্ট ফাইলটি রানঃ</p> -<ul> - <li><strong>লিনাক্সঃ </strong>যেখানে আপনি ফোল্ডারটি এক্সট্রাক্ট করে রেখেছেন সেটি নেভিগেট করুন এবং রান করানঃ<code>./b2g.sh</code>.</li> - <li><strong>ম্যাকঃ</strong> আপনার অ্যাপ্লিকেশন ফোল্ডারে B2G.appটি ড্র্র্যাগ এবং ড্রপ করুন এবং সেখান থেকে এটি রান করান।</li> - <li><strong>উইন্ডোজঃ</strong> আপনি যে ডিরেক্টরিতে b2g.exe এক্সট্রাক্ট করেছেন, সেখান থেকে zip টি রান করান।</li> -</ul> -<p>এপ্লিকেশনটি একবার স্টার্ট-আপ হয়ে গেলে এরকম একটি উইন্ডো দেখতে পাওয়ার কথাঃ</p> -<p><img alt="A welcome screen for Firefox OS - says welcome in multiple languages" src="https://mdn.mozillademos.org/files/7207/b2g-start-screen.png" style="width: 322px; height: 509px; display: block; margin: 0px auto;"></p> -<p>ফার্স্ট টাইম ইউজার স্টেপগুলো অনুসরণ করুন, যতক্ষণ না ফায়ারফক্স OS হোমস্ক্রিন পাওয়া যায়। মনে রাখুন, আপনি ফোনের হার্ডওয়্যার বাটন ইম্যুলেট করতে পারেন নিচের কীবোর্ড কমান্ড ব্যবহারের মাধ্যমে, যেটি বেশ উপকারী (যেমনঃ হোম প্রেস করে ফোনকে সচল করা )।</p> -<table class="standard-table"> - <thead> - <tr> - <th scope="row"> - <p> </p> - </th> - <th scope="col"> - <p>উইন্ডোজ/লিনাক্স কীবোর্ড</p> - </th> - <th scope="col"> - <p>ম্যাক OS কীবোর্ড</p> - </th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row"> - <p>হোম বাটন</p> - </th> - <td> - <p>Home</p> - </td> - <td> - <p>Fn+left arrow</p> - </td> - </tr> - <tr style="height: 0px;"> - <th scope="row"> - <p>পাওয়ার বাটন</p> - </th> - <td> - <p>End</p> - </td> - <td> - <p>Fn+right arrow</p> - </td> - </tr> - <tr> - <th scope="row"> - <p>ভলিউম আপ/ডাউন</p> - </th> - <td> - <p>Page up/Page down</p> - </td> - <td> - <p>Fn+ up/down arrow</p> - </td> - </tr> - </tbody> -</table> -<p>এই পর্যায়ে আপনি B2G ডেক্সটপ ওপেন রেখেই একপাশে রেখে পরবর্তী কাজ করতে পারেন। এবার আমরা ম্যারিনেট ইন্সটল করে কাজটি শেষ করব।</p> -<h2 id="ম্যারিওনেট">ম্যারিওনেট</h2> -<p>দুইটি অংশ আছে ম্যারিওনেটে; ক্লাইন্ট — যেটি আপনার আপনার ল্য্যাপটপে অপারেট করে — এবং সার্ভার — যা ফায়ারফক্স OS সার্ভারের মধ্যে কাজ করে। তখন পাপেটরের মত ম্যারিওনেট সার্ভার সরাসরি ফায়ারফক্স OS কন্ট্রোল করতে পারে।</p> -<p><img alt="marionette architecture showing marionette server inside Firefox OS and marionette client on its own outside" src="https://mdn.mozillademos.org/files/7223/marionette-basic-diagram.png" style="width: 352px; height: 186px; display: block; margin: 0px auto;"></p> -<p>আমরা যেহেতু ডেক্সটপ B2G ক্লাইন্ট ব্যবহার করছি, তাই ম্যারিওনেট সার্ভার প্রি-ইন্সটল করা আছে (আপনি যখন কোন রিয়েল ডিভাইসের জন্য ফায়ারফক্স OS এর ইঞ্জিরিয়ারিং-কনফিগারড বিল্ড ব্যবহার করছেন তখনও এটি প্রযোজ্য )। ফায়ারফক্স নিয়ন্ত্রণ করতে পারার আগে, আমাদের লোকাল কম্পিউটারে ম্যারিওনেট ক্লাইন্ট ইন্সটল করা দরকার। আপনার টার্মিনালে নিচের কমান্ডটি রান করইয়ে এটি করা হয়ঃ</p> -<pre class="brush: bash">pip install marionette_client</pre> -<p>এখনকার জন্য এটুকুই। আমরা তৈরি এবং যাওয়ার জন্য প্রস্তুত !</p> -<p> </p> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_2_marionette_firefox_os_interactions/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_2_marionette_firefox_os_interactions/index.html deleted file mode 100644 index 376f6193a3..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_2_marionette_firefox_os_interactions/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: দ্বিতীয় অংশঃ Marionette ব্যবহার করে ফায়ারফক্স OS এর মৌলিক ব্যবহার -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions -tags: - - needs review - - >- - tests Automation gaia-ui-tests marionette Firefox OS - B2G Gaia Python -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests")}}</p> -<div class="summary"> - <p><span class="seoSummary">আমাদের টিউটোরিয়ালের দ্বিতীয় অংশে আমরা কিছু সাধারণ ম্যারিওনেট কমান্ড দিয়ে শুরু করব যা দিয়ে রিমোটলি ফায়ারফক্স OS নিয়ন্ত্রণ করা যায়। এটি কোন টেস্টের সম্পূর্ণ লেখা ধারণ করে না তবে এটি আপনাকে বেসিক কোড ফিচার শেখায় যা টেস্ট লেখার সময় আপনার কাজে লাগবে। তৃতীয় অংশে, আমরা একটি প্রকৃত টেস্টের মাধ্যমে কোডটিকে আরো মার্জিত করার জন্য অগ্রসর হব। </span></p> -</div> -<h2 id="ফায়ারফক্স_OS_স্টার্ট_আপ">ফায়ারফক্স OS স্টার্ট আপ</h2> -<p>এই টেস্টগুলো লেখার সময় আমাদের আগে থেকেই ফায়ারফক্স OS রান করিয়ে নির্দেশ গ্রহণের জন্য প্রস্তুত রাখা লাগবেঃ</p> -<ol> - <li>B2G ডেক্সটপ স্টার্ট আপ করুন।</li> - <li>লক স্ক্রিন নিষ্ক্রয় করুনঃ <em>সেটিং অ্যাপ > স্ক্রিন লক > আনচেক লক স্ক্রিন।</em></li> - <li> স্ক্রিন টাইম আউট/ স্লিপ মোড নিষ্ক্রিয় করুন এভাবেঃ <em>সেটিং অ্যাপ > ডিসপ্লে > স্ক্রিন টাইমআউট </em>সেটিং <em>নেভার</em> এ দিয়ে।</li> - <li>উইন্ডোটি পাশে সরিয়ে রেখে আমাদের টেস্ট কমান্ডের জন্য অপেক্ষা করুন।</li> -</ol> -<h2 id="ম্যারিওনেট_ফায়ার_আপ_করা">ম্যারিওনেট ফায়ার আপ করা</h2> -<p>এখন আমরা শুরু করব পাথন কনসোলঃ খুবই সাধারণভাবে একটি টার্মিনাল উইন্ডো ওপেন করে <code>python</code> কমান্ড ইস্যু করুন।</p> -<p>এখান থেকে আমরা ফায়ারফক্স OS এর ভিতরে ম্যারিওনেট সার্ভারে কমান্ড দেওয়া শুরু করতে পারি। নিচের বেশ কিছু কমান্ড ইস্যু করার পর আপনার ফায়ারফক্স OS এর প্রতিক্রিয়া দেখতে পাওয়ার কথা। আমাদের প্রয়োজনীয় কোড সংবলিত লাইব্রেরী ইমপোর্ট করতে ম্যারিওনেটে পাইথন কনসোলে নিচের কমান্ডটি প্রবেশ করানঃ</p> -<pre class="brush: bash">from marionette import Marionette</pre> -<p>এখন নিচের লাইন দুইটি রান করান, যা ক্লাইন্ট থেকে কমান্ড গ্রহণের জন্য ম্যারিওনেট সেশনকে ইনিশিয়েট করেঃউপরে যেরকম বলা হয়েছে আপনি যদি সেভাবে লক স্ক্রিন নিষ্ক্রিয় না করে থাকেন তবে আপনি প্রোগ্রামের মাধ্যমে তা করতে পারেন এই কমান্ডটি ব্যবহার করেঃ</p> -<pre class="brush: bash">marionette = Marionette() -marionette.start_session()</pre> -<pre class="brush: bash">marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();')</pre> -<h2 id="ফায়ারফক্স_OS_এর_মধ্যে_বিভিন্ন_ফ্রেম_প্রবেশ_করানো">ফায়ারফক্স OS এর মধ্যে বিভিন্ন ফ্রেম প্রবেশ করানো<br> - </h2> -<p>ফায়ারফক্স এ ওয়েব অ্যাপ বিভিন্ন ইনফ্রেমে কাজ করে। ভিন্ন ভিন্ন ইনফ্রেমে (কোন উইন্ডোর মত) ওয়েব অ্যাপ রান করলে তাদের পূর্ণ নিরাপত্তা নিশ্চিত হয় এবং একই সাথে যথাযথ ব্যবস্থাপনাও। অ্যাপ যেখানে রান করে সেটিকে আপনি একটি স্যান্ডবক্সের মত ভাবতে পারেন। শুধুমাত্র ম্যারিওনেটই কোন নির্দিষ্ট সময়ে একটি ফ্রেমে কাজ করতে পারে। আমরা যে ফ্র্রেম নিয়ে কাজ করতে যাচ্ছি তাতে সুইচ হওয়ার জন্য ম্যারিওনেট দরকারঃ</p> -<p>টপ ফ্রেমটিও হল সিস্টেম অ্যাপ। প্রত্যেকটি অ্যাপ এবং তাদের ফ্রেম হল সিস্টেম অ্যাপের আওতাভুক্ত। আমাদের নতুন ম্যারিওনেট সেশন সিস্টেম ফ্রেম স্টার্ট করতে সক্ষম কিন্তু টেস্ট স্টার্ট করার জন্য আমাদের তা খুঁজে হোমস্ক্রিনে সুইচ করার দরকার হবে।</p> -<p>ইনফ্রেম খোঁজার জন্য, আমাদের কোনভাবে এটি নির্দিষ্ট করা লাগবে। যেহেতু ম্যারিওনেট ওয়েব ড্রাইভার API ভিত্তিক, তাই এলিমেন্ট লোকেট করার জন্য এটি একই তথ্য ব্যবহার করে। তাই আমরা ওয়েব ড্রাইভারে ওয়েব এলিমেন্ট নির্দিষ্ট করার জন্য যে কোন তথ্য ব্যবহার করতে পারি। আরো তথ্য জানুন<a href="http://www.w3.org/TR/webdriver/#element-location-strategies"> এলিমেন্ট লোকেশন স্ট্র্যাটিজিজ</a> এ।</p> -<p>এ ক্ষেত্রে আমরা হোমস্ক্রিন ইনফ্রেম সিলেক্ট করার জন্য CSS সিলেক্টর <code>div.homescreen iframe</code> ব্যবহার করব;<code> find_element()</code> ফাংশনটি এটিকে দ্বিতীয় আর্গুমেন্ট হিসাবে নেয়, প্রথম আর্গুমেন্টটি হল খোঁজ করার জন্য কোন সিলেকশন ম্যাকানিজম ব্যবহৃত হচ্ছে তা নির্ধারণ করা। তারপর আমরা এই ফলাফল কোন একটি ভ্যারিয়েবলে স্টোর করে রাখব এবং আর্গুমেন্ট হিসাবে তা দিয়ে <code>switch_to_frame()ফাংশনটি রান করাব</code>। নিচের দুইটি নির্দেশ এখন অনুসরণ করুনঃ</p> -<pre class="brush: bash"># Switch context to the homescreen iframe and tap on the Contacts app icon -home_frame = marionette.find_element('css selector', 'div.homescreen iframe') -marionette.switch_to_frame(home_frame)</pre> -<div class="note"> - <p><strong>নো</strong><strong>টঃ</strong>আরো পড়ার জন্য এবং সুইচিং ফ্রেম সম্পর্কিত ডায়াগ্রাম জানার জন্য অনুগ্রহ করে পড়ুন<a href="https://blog.mozilla.org/webqa/2013/02/13/part-2-ui-testing-on-firefox-os-working-with-iframes/"> iFrames দিয়ে কাজ করা</a>।</p> -</div> -<h2 id="অ্যাপ্লিকেশন_ওপেন_করা">অ্যাপ্লিকেশন ওপেন করা</h2> -<p>ঠিক আছে। এখন আমরা হোমস্ক্রিন অ্যাপ এ আছি। <code>tap()</code> function এর সাথে আমরা <code>find_element()ব্যবহার করে </code>আইকন এবং ট্যাপকে নির্দিষ্ট করতে পারি।</p> -<pre class="brush: bash">contacts_icon = marionette.find_element('css selector', "#footer li[aria-label='Contacts']") -contacts_icon.tap()</pre> -<p>এই কাজগুলো সব ঠিক মত হয়ে থাকলে আপনার এখন কনটেন্টস অ্যাপ ওপেন দেখতে পাওয়ার কথা, কিন্তু কনটেন্ট অ্যাপ ফ্রেম নিয়ে কাজ করার জন্য আমাদের কনটেন্ট অ্যাপ ফ্রেম সুইচ করতে হবে, যেমনটি আমরা আগে হোমস্ক্রিনে করেছিলাম আগেঃ</p> -<pre class="brush: bash"># First, we need to switch context back to the System frame -marionette.switch_to_frame() - -# Now, switch context to the contacts app frame -contacts_frame = marionette.find_element('css selector', "iframe[data-url*='contacts']") -marionette.switch_to_frame(contacts_frame)</pre> -<p>ফ্রেমে সুইচ করলে তা রিটার্ন করবে <code>True</code>. যদি তা হয়, তাহলে তো খুবই ভাল। এর মানে হল আমরা কন্টেন্টস্ অ্যাপ এর ভেতরে আছি এবং এটি ব্যবহারের জন্য প্রস্তুত।</p> -<h2 id="অ্যাপ_ম্যানিপুলেট_করা">অ্যাপ ম্যানিপুলেট করা</h2> -<p>পরবর্তী ধাপে আমরা একটি টিপিক্যাল টেস্ট টাস্ক পারফর্ম করব — নতুন অ্যাকাউন্ট তৈরি করা, তাতে নাম দেওয়া এবং সেভ করা। প্রথমে, আমরা অ্যাড কনটেন্ট বাটনটি ট্যাপ করবঃ</p> -<pre class="brush: bash"># Tap [+] to add a new Contact -marionette.find_element('id', 'add-contact-button').taঞ্জঃএখনNow let’s add the contact's name using the next two commands (<code>send_keys()</code> is used to insert a value into an element): -</pre> -<pre class="brush: bash">marionette.find_element('id', 'givenName').send_keys('Foo') -# Add the contact's surname -marionette.find_element('id', 'familyName').send_keys('Bar')</pre> -<p>এখন <em>ডান</em> বাটনটি ট্যাপ করুন কনটেন্ট সেভ করার জন্যঃ</p> -<pre class="brush: bash"><code class="language-html">marionette.find_element('id', 'save-button').tap()</code></pre> -<p>এবার আপনার কনটেন্টস্ অ্যাপ এর মধ্যে একটি নতুন কনটেন্ট দেখতে পাওয়ার কথা। যদি তাই হয়, দারুণ!</p> -<div class="note"> - <p><strong>নোটঃ</strong> যদি আপনি না দেখেন, কনটেন্ট অ্যাপ পুনস্থাপন করুন অথবা কিল করুন এবং ফায়ারফক্স OS নেভিগেট করে হোমস্ক্রিনে ফিরে যান এবং পুনরায় টাস্কটি রান করার চেষ্টা করুন।</p> -</div> -<h2 id="আপনার_ম্যারিওনেট_সেশন_বন্ধ_করা">আপনার ম্যারিওনেট সেশন বন্ধ করা</h2> -<p>শেষ পর্যন্ত, আপনার নিচের নির্দেশ ইস্যু করার মাধ্যমে ম্যারিওনেট সেশন শেষ করার কথাঃ</p> -<pre class="brush: bash">marionette.delete_session()</pre> -<p>বেশ ভালো কাজ হয়েছে, কিন্তু যখন আপনি টেস্ট রান করানোর সময় আপনি পাইথন কনসোলে টাইপ করতে পারবেন না। তৃতীয় অংশে, আমরা স্ক্রিপ্টটি পাইথন ফাইলে কম্পাইল করব যা আমরা প্রতিবার ব্যবহার করতে করতে পারব যখনই আমরা টেস্ট রান করাব। আমরা একটি অ্যাসারশনও যুক্ত করব যাতে আমরা বুঝতে পারি টেস্ট সফল নাকি বিফল হয়েছ।</p> -<div class="note"> - <p><strong>নোটঃ</strong> ম্যারিওনেট লেখার সময়, আপনি নিশ্চয় খেয়াল করে থাকবেন আপনার সমাধান খুঁজে বের করার জন্য কোন অ্যাপের HTMLস্ট্রাকচার এর আওতায় প্রবেশ করা জরুরি। <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests#Resources">সপ্তম অংশঃ আপনার নিজের টেস্ট লেখা</a> আপনার সাহায্যার্থে কিছু প্রয়োজনীয় রিসোর্স দেয়।</p> -</div> -<p> </p> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_3_reusable_tests/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_3_reusable_tests/index.html deleted file mode 100644 index 15b92598e6..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_3_reusable_tests/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: তৃতীয় অংশঃ আমাদের টেস্টকে পুনরায় ব্যবহারযোগ্য টেস্টে উন্নীত করা -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests -tags: - - needs review -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests ---- -<p>{{PreviousNext("Mozilla /Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_2_Marrionette_Firefox_OS_interactions", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup")}}</p> - -<div class="summary"> -<dl> - <dt> </dt> - <dt><span class="seoSummary">দ্বিতীয় অংশ থেকে আমরা দেখেছি যে, ম্যারিওনেট ক্লাইন্ট কমান্ড ব্যবহার করে খুব সহজেই ফায়ারফক্স OS নিয়ন্ত্রণ করতে পারি, কিন্তু পাইথন কনসোলে তা টাইপ করা অত্যন্ত ধৈর্য সাপেক্ষ ব্যাপার। টেস্ট অটোমেশনের প্রধান সুবিধা হল এটি নিজে থেকে রান হতে পারে। এই অংশে আমরা শিখব তা কীভাবে করতে হয়, আমরা আমাদের সব কোড কমান্ড একটি পাইথন ফাইলে রাখি যাতে সবগুলো একবারেই রান হয়ে যায়।</span></dt> -</dl> -</div> - -<h2 id="টেস্ট_কেস_পুনরায়_আলোচনা">টেস্ট কেস পুনরায় আলোচনা</h2> - -<p>দ্বিতীয় অংশে আমরা একটি আদর্শ টেস্ট রান করার ধাপগুলো দেখেছি — কন্ট্যাক্ট অ্যাপ ওপেন করা এবং নতুন কোন কন্ট্যাক্ট অ্যাড করাঃ</p> - -<ol> - <li>ফায়ারফক্স OS আনলক করা (ঐচ্ছিক; দ্বিতীয় অংশে, আমরা লক স্ক্রিন নিষ্ক্রিয় করে দিয়েছিলাম, সেজন্য আমরা সেটি এই অংশের কোডে উল্লেখ করব না।)</li> - <li>কন্ট্যাক্ট অ্যাপে সুইচ করা</li> - <li>নতুন কন্ট্যাক্ট আইকন ট্যাপ অ্যাড করা</li> - <li>কন্ট্যাক্ট তালিকায় টাইপ করা</li> - <li>done ট্যাপকরা</li> - <li>অপেক্ষা করা এবং নিরীক্ষণ করা কন্ট্যাক্ট প্রস্তুত কিনা</li> -</ol> - -<h2 id="আমাদের_টেস্ট_পাইথন_ফাইলে_রাখা">আমাদের টেস্ট পাইথন ফাইলে রাখা</h2> - -<p>আমরা যদি এই সমস্ত ধাপগুলো একটি পাইথন ফাইলে রাখি, তবে আমরা তা পুনরায় ব্যবহার করতে পারব এবং অনেক দ্রুত রান করাতে পারব। <code>আপনার পছন্দ মত কোন</code> convenient directory তে<code> test_add_contact.py নামে </code>একটি নতুন টেক্সট ফাইল তৈরি করুন।</p> - -<p>এই ফাইলে, নিচের লিস্ট অনুসারে, দ্বিতীয় অংশে দেখানো কমান্ডগুলো প্রবেশ করান। আমরা পাইথন পর্যায়ের স্ট্রাকচার ব্যবহার করব, কারণ এটি ভাল চর্চা এবং এই টিউটোরিয়ালে পরবর্তীতে স্টেপে বিল্ড অনের জন্য ভাল ভিত্তি তৈরি করে।</p> - -<pre class="brush: python">import time -from marionette import Marionette - -class TestContacts: - - def __init__(self): - self.test_add_contacts() - - def test_add_contacts(self): - # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally - self.marionette = Marionette() - self.marionette.start_session() - - # Switch context to the homescreen iframe and tap on the contacts icon - time.sleep(2) - home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe') - self.marionette.switch_to_frame(home_frame) - contacts_icon = self.marionette.find_element('css selector', "#footer li[aria-label='Contacts']") - contacts_icon.tap() - - # Switch context back to the base frame - self.marionette.switch_to_frame() - time.sleep(2) - - # Switch context to the contacts app - contacts_frame = self.marionette.find_element('css selector', "iframe[data-url*='contacts']") - self.marionette.switch_to_frame(contacts_frame) - - # Tap [+] to add a new Contact - self.marionette.find_element('id', 'add-contact-button').tap() - time.sleep(2) - - # Type name into the fields - self.marionette.find_element('id', 'givenName').send_keys('John') - self.marionette.find_element('id', 'familyName').send_keys('Doe') - - # Tap done - self.marionette.find_element('id', 'save-button').tap() - time.sleep(2) - - # Close the Marionette session now that the test is finished - self.marionette.delete_session() - -if __name__ == '__main__': - TestContacts() -</pre> - -<div class="note"> -<p><strong>নোটঃ</strong>একটি ব্যাপার আপনি খেয়াল করে থাকবেন যেটি আমরা দ্বিতীয় অংশে করি নাই তা হল পাইথন <code>time.sleep()ফাংশন</code>— এটি একটি নির্দিষ্ট সমযের জন্য স্ক্রিপ্টটি মন্থর করে দেয় (defined in seconds) পরবর্তী লাইনে অগ্রসর হওয়ার আগে। আমরা অটোমেটেড টেস্টে এই লাইনগুলো যুক্ত করেছি কারণ আমাদের ব্যবহারকারীকে বাটন ট্যাপ করা এবং আরও আঞ্জাঞ্জ ব্যাপারে ব্যাপারে সিমুলেট করা দরকার এবং ফায়ারফক্স OS এর resulting কাজ সম্পন্ন হওয়ার জন্য। আমরা যদি কোন দেরি না করেই এই স্ক্রিপ্টটি রান করে করাতাম তবে পাইথন তাৎক্ষণিকভাবে সবকিছু করে ফেলত এবং খুব সম্ভবত সেটি টেস্ট ফেল করার কারণ হত কারণ ফায়ারফক্স OS সেটি করতে সমর্থ নয়।</p> -</div> - -<p> </p> - -<p>এখন আপনি ডিরেক্টরিতে নেভিগেট করে টেস্ট রান করতে পারেন। টেস্টটি আপনার টার্মিনালে সেভ হয়ে আছে এবং নিচের কমান্ডটি রান করছেঃ</p> - -<pre class="brush: bash">python test_add_contact.py</pre> - -<div class="note"> -<p><strong>নোটঃ</strong> পাইথন ইনডেন্টেশন রুল এর ব্যাপারে সতর্ক হন। কপি এবং পেস্ট করার পর কোড সঠিকভাবে রান করানোর জন্য আপনার সবকিছু সঠিকভাবে ইনডেন্ট করার প্রয়োজন হতে পারে। আপনি যদি এই সংক্রান্ত কোন ত্রুটি পেয়ে থাকেন তবে খেয়াল করে দেখুন সব ইনডেন্টেশন লেভেল ভিন্ন ভিন্ন ট্যাবে পৃথকীকৃত কিনা।</p> -</div> - -<div class="note"> -<p><strong>নোটঃ</strong> আপনি আরো খেয়াল করে থাকবেন যে, উপরের কোড ব্যবহার করে যে নাম যুক্ত করা হয়েছে তা হল "John Doe", দ্বিতীয় অংশে ব্যবহৃত নাম "Foo Bar" এর থেকে আলাদা। এটি করার কারণ হল কোড যাতে করে সফলভাবে রান করানো যায় এবং অন্য কন্ট্যাক্ট যুক্ত করা যায়। আপনি যদি একই নাম ব্যবহার করে অন্য একটি কন্ট্যাক্ট যুক্ত করতে চেষ্টা করেন তবে ফায়ারফক্স OS আপনাকে অনুরূপ কন্ট্যাক্টের ব্যাপারে সতর্ক করে দিবে। এক্ষেত্রে সব থেকে ভাল উপায় হল, ফায়ারফক্স OS ইন্টারফেসে টেস্টটি পুনরায় রান করানো এবং প্রতিবার রান করানোর পূর্বে আগেরটি মুছে ফেলা।</p> -</div> - -<h2 id="অ্যাসারশন_যুক্ত_করা">অ্যাসারশন যুক্ত করা</h2> - -<p>যে জিনিসটি আবারো আমরা আমাদের টেস্ট থেকে মিস করছি, যা অটোমেটেড টেস্টের জন্য যেটি দরকারি, তা হল অ্যাসারশন — ফায়ারফক্স OS কে আমরা যে পর্যায়ে নিয়ে যেতে চাচ্ছি, সেটি সফল ছিল কিনা তা পরিমাপের একটি তথ্য এটি। কিছু কোড যুক্ত করে আমরা দেখব নতুন কন্ট্যাক্টটি যুক্ত হয়েছে কিনা।<br> - <br> - <code># Close the Marionette session...</code> লাইনের ঠিক আগে, এই কোডটি যুক্ত করুন, তবে তার আগে এটি নিশ্চিত করুন সেটি ওই ক্লাসের অন্য লাইনের সাথে একই লেভেলে ইনডেন্ট হয়েছে কিনাঃ</p> - -<pre class="brush: python"># Now let's find the contact item and get its text -contact_name = self.marionette.find_element('css selector', 'li.contact-item:not([data-group$="ice"]) p').text -assert contact_name == 'John Doe' - -</pre> - -<p>পুরানো কন্ট্যাক্টটি মুছে ফেলুন এবং নিচেরটিসহ টেস্টটি পুনরায় রান করানোর চেষ্টা করুনঃ</p> - -<pre class="brush: bash">python test_add_contact.py</pre> - -<p>যদি এগুলো সব থিক্তহাক মত রান করে তাহলে ভাল, এখন আমাদের জন্য আছে ফাংশন টেস্ট!</p> - -<div class="note"> -<p><strong>নোটঃ</strong> অ্যাসারশনকে সাথে সাথেই ঠিকভাবে কাজ করতে দেখা যাবে না, কিন্তু টেস্ট রানার শুরু করার জন্য অ্যাসারশন খুবই গুরুত্বপূর্ণ যেমনটি বলা হয়েছে <a href="/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner">পঞ্চম অংশঃ টেস্ট রানারের সাথে পরিচিত হওয়া</a>। ইউনিটেস্ট এর মত টেস্ট রানার অ্যাসারশন ব্যবহার করে দেখে টেস্ট সফলভাবে শেষ হয়েছে কিনা অতপর এই টেস্টের ফলাফল দিন (OK অথবা FAIL)</p> -</div> - -<h2 id="সময়ের_উপর_একটি_নোট">সময়ের উপর একটি নোট</h2> - -<p>অটোমেটেড টেস্ট রান করানোর সময় যে কাজটি বেশ কষ্টসাধ্য তা হল সময় নির্ধারণ। টেস্টটি যদি ফায়ারফক্স OS এর একটি টেস্ট সম্পন্ন হবার আগেই পরবর্তী ধাপে অগ্রসর হয় তবে খুব সম্ভবত আমরা ভুল পথে আগাচ্ছি।<br> - <br> - উপরে যেমনটি বলা হয়েছে, নমুনা কোডে আমরা <code>এই সমস্যার সমাধানে time.sleep(x)</code> কমান্ডটি যুক্ত করেছি। যাই হোক <code>time.sleep(x)</code> ব্যবহার করা খুব ভাল কথা না। হার্ডকোডেড সেট টাইম ব্যবহার করার ফলে এম্নটি হতে পারে আপনার টেস্ট যথেষ্ট সময় ধরে রান করছে না অথবা অনেক বেশি সময় ধরে রান করছে। সব থেকে খারাপ ব্যাপারটি হল latter; এটি ফলস নেগেটিভ কেস রেসাল্ট দেখাবে — যার মানে হল অ্যাপ যথার্থভাবে কার্যকর হলেও আশানুরূপ গতিতে কাজ না করে কিছুটা ধীরে কাজ করার পরিবর্তে সেটি টেস্ট ব্যর্থতা ফল দেখাবে।</p> - -<p>পরবর্তী অংশে, আমরা আলাদা আলাদা পাইথন ফাংশনে টেস্টের বিশেষ কিছু অংশের উপর অগ্রসর হব এবং<code> sleep()</code> ফাংশনের পরিবর্তে উপযুক্ত ডাইনামিক ওয়েটস দিয়ে।</p> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_4_reusing_commands_firefox_os_setup/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_4_reusing_commands_firefox_os_setup/index.html deleted file mode 100644 index 0260079d94..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_4_reusing_commands_firefox_os_setup/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: চতুর্থ অংশঃ ফায়ারফক্স সেট-আপ করার জন্য কমান্ডের পুনঃব্যবহার -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup -tags: - - Automation - - B2G - - Firefox OS - - Gaia - - Marionette - - Python - - Testing - - gaia-ui-tests - - needs review -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner")}}</p> - -<div class="summary"> -<div class="summary"> -<p><span class="seoSummary">দ্বিতীয় এবং তৃতীয় অংশে আমরা ওয়ার্কিং টেস্ট পেয়েছি, কিন্তু আমরা যদি টেস্ট রান করানোর আগে এটির স্টেট পুনসথাপন করতে চায় (যেমন ওপেন অ্যাপ কিল করা) তবে আমাদেরকে তা করতে হবে আবার নতুন করে করতে হবে। সেটা কিছুটা বিরক্তিকর, তাই এটিকে স্বনির্ভর করা দরকার! এই অংশে আমরা সেটিই করা দেখব এবং আরো দেখব আলাদা আলাদা পাইথন মেথডে কোডের বিট ব্রেক আউট করা, যা আমরা রিইউজ করতে পারি।</span></p> -</div> -</div> - -<h2 id="নিজে_থেকে_পুনঃস্থাপিত_স্টেট">নিজে থেকে পুনঃস্থাপিত স্টেট</h2> - -<p>কোন টিপিক্যাল টেস্ট রানের আগে, আমাদের খুব সম্ভবত ফায়ারফক্স OS লক স্ক্রিন আনলক করে নেওয়া লাগবে এবং সব চলমান অ্যাপ কিল করতে হবে। এখন দেখা যাক এটি কীভাবে করা যায়।</p> - -<h3 id="লক_স্ক্রিন_আনলক_করা">লক স্ক্রিন আনলক করা</h3> - -<p>অন্য কোথাও যাওয়ার আগে, লক স্ক্রিন পুনরায় সক্রিয় করে নিনঃ <em>সেটিং অ্যাপ > স্ক্রিন লক > লক স্ক্রিন </em>, যদি আপনি তা না করে থাকেন।</p> - -<p>নিচের পাইথন ম্যাথোডটি আপনার <code>test_add_contact.py</code> ফাইলে সংযুক্ত করুন, ক্লাসের ভেতরেঃ</p> - -<pre class="brush: python">def unlock_screen(self): - self.marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();')</pre> - -<p>এখন, যখন কল করা হবে, এই ম্যাথোডটি ফায়ারফক্স OS আনলক করবে। এখন নিচের লাইনগুলো আমাদের কোডে <code>self.marionette.start_session()</code> লাইনটির ঠিক নিচে যুক্ত করে এটিকে কল করা যাকঃ</p> - -<pre class="brush: python"># Unlock the screen -self.unlock_screen()</pre> - -<h3 id="কোন_ওপেন_অ্যাপ_কিল_করা">কোন ওপেন অ্যাপ কিল করা</h3> - -<p>এখন আমরা কোড রান করানোর সময় অন্য সব ওপেন কোড কিল করার জন্য আমাদের কোডে একটি ম্যাথোড যুক্ত করব। সেটা এমন দেখাবেঃ</p> - -<pre class="brush: python"> def kill_all(self): - self.marionette.switch_to_frame() - self.marionette.execute_async_script(""" - // Kills all running apps, except the homescreen. - function killAll() { - let manager = window.wrappedJSObject.appWindowManager; - - let apps = manager.getApps(); - for (let id in apps) { - let origin = apps[id].origin; - if (origin.indexOf('homescreen') == -1) { - manager.kill(origin); - } - } - }; - killAll(); - // return true so execute_async_script knows the script is complete - marionetteScriptFinished(true); - """)</pre> - -<p><code>সর্বশেষ অংশে যুক্ত unlock_screen</code> ম্যাথোডের ঠিক পরে এটি যুক্ত করুন।</p> - -<p>তারপর, বাকি টেস্টের সাথে এটিকে রান করানোর জন্য নিচের ফাংশনটি যুক্ত করুন; <code>self.unlock_screen()</code> এর ঠিক পরে যুক্ত করুনঃ</p> - -<pre class="brush: python"># kill all open apps -self.kill_all()</pre> - -<p>এখন পুনরায় টেস্ট রান করানোর চেষ্টা করার আগে, শেষবার টেস্ট রান করানোর পর কন্ট্যাক্ট অ্যাপ ওপেন রেখে লক স্ক্রিনে ফিরে যাওয়ার চেষ্টা করুন। স্ক্রিন আনলক থাকার কারণে, টেস্ট পুনরায় রান করানর আগে, ওপেন কন্ট্যাক্ট অ্যাপ নিজে থেকেই কিল হয়ে যাবে, তাই এটির অবস্থা আপনার টেস্ট করানর প্রক্রিয়া ব্যাহত করবে না। আপনার টেস্ট রানের সুদূর নির্ভরতার জন্য এটি গুরুত্বপূর্ণ।</p> - -<p>রানটি বেশ কয়েকবার রান করিয়ে দেখুন সব কিছু ঠিকঠাক মত কাজ করছে কিনা এবং ফায়ারফক্স ঠিক মত রিসেট করে নিন।</p> - -<h2 id="ডাইনামিক_ওয়েটস্">ডাইনামিক ওয়েটস্</h2> - -<p>তৃতীয় অংশে আমরা ডাইনামিক ওয়েটস্ এর গুরুত্ব উল্লেখ করেছি। ঠিক ওয়েব ড্রাইভার/ সেলেনিয়াম2 এর মত ম্যারিওনেটেরও এমন নিজস্ব সিনট্যাক্স আছেঃ</p> - -<pre class="brush: python">from marionette_driver import Wait - -# Wait until element is displayed -Wait(self.marionette).until(lambda m: m.find_element('id', 'element_id').is_displayed())</pre> - -<p>যতক্ষণ না পর্যন্ত নির্ধারিত এলিমেন্টটি ডিসপ্লে হবে তখন পর্যন্ত এই কোডটি অপেক্ষা করবে। এবার আমরা জানি সেক্ষেত্রে আমাদের কী করতে হবে। এবার আমাদের টেস্টে এই কোড কন্সট্রাক্ট ব্যবহার করে দেখা যাক।</p> - -<p>প্রথমত, আপনার বর্তমান ইম্পোরট লাইনের ঠিক নিচে ওয়েট ইম্পোরটটি যুক্ত করুনঃ</p> - -<pre class="brush: python">from marionette_driver import Wait</pre> - -<p>এখন আমরা কন্ট্যাক্ট আইকনে ট্যাপ করার পর ( <code>self.marionette.switch_to_frame()</code>এর ঠিক পরে ) দ্বিতীয় <code>time.sleep(2)ফাংশনটির পরিবর্তে</code> <code>Wait()</code>ম্যাথোডটি লিখব। কন্ট্যাক্ট ফ্রেম ডিসপ্লে না হওয়া পর্যন্ত সেটি অপেক্ষা করবেঃ</p> - -<pre class="brush: python">Wait(self.marionette).until(lambda m: m.find_element('css selector', "iframe[data-url*='contacts']").is_displayed())</pre> - -<p>আমরা যখন কোন নতুন কন্ট্যান্ট অ্যাপ তৈরির জন্য + চিহ্নতে ট্যাপ করি, আমরা <em>অ্যাড কন্টেন্ট </em>এর জন্য অপেক্ষা করব যাতে ভিউটি সম্পূর্ণ সরে যায়।এবার আমরা যেটি ট্যাপ করব তা হল <em>Done</em> (সেভ) বাটন। তাই সেটি সঠিক স্থানে না আসা পর্যন্ত আমরা অপেক্ষা করব। তৃতীয় <code>time.sleep(2)ফাংশনটি</code>র পরিবর্তে নিচেরটি লিখবঃ</p> - -<pre class="brush: python">Wait(self.marionette).until(lambda m: m.find_element('id', 'save-button').location['y']== 0)</pre> - -<p>এক্ষেত্রে আমরা <em>Done</em> বাটনটি স্ক্রিনের শীর্ষে দেখতে পাইয়া পর্যন্ত অপেক্ষা করব; প্রথমের দিকে এলিমেন্টটি স্ক্রিনের ভিন্ন ভিন্ন স্থানে দেখতে পাওয়া যাবে তবে চূড়ান্ত স্থায়ী অবস্থানের জন্য অপেক্ষা করাই শ্রেয়।</p> - -<p>আমরা এলিমেন্টগুলোর *not* দৃশ্যমান হওয়ার জন্যও অপেক্ষা করতে পারি। <em>Done</em> ট্যাপ করার পর, not এর মত একই ধরণের <code>Wait()ম্যাথোড ব্যবহার করে </code><em>Done</em> বাটনটি অদৃশ্য হওয়ার জন্য অপেক্ষা করব, বাকি কোড রান করানোর আগে। চতুর্থ এবং সর্বশেষ <code>time.sleep(2)</code>ফাংশনটির পরিবর্তে নিচেরটি লিখুনঃ</p> - -<pre class="brush: python">Wait(self.marionette).until(lambda m: not m.find_element('id', 'save-button').is_displayed())</pre> - -<p>আপনার টেস্ট যদি ঠিক মত রান করতে থাকে তাহলে তো দারুণ! আমরা আমাদের টেস্টকে আরো বেশি মডুলার এবং নির্ভরযোগ্য করে ফেলেছি। পঞ্চম অংশে আমরা টেস্ট রানার ব্যবহারের সাথে পরিচিত হব।</p> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_5_introducing_a_test_runner/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_5_introducing_a_test_runner/index.html deleted file mode 100644 index c321508f02..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_5_introducing_a_test_runner/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: পঞ্চম অংশঃ টেস্ট রানার পরিচিতি -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner -tags: - - Automation - - B2G - - Firefox OS - - Gaia - - Marionette - - Python - - gaia-ui-tests - - needs review - - tests -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_6_Marionette_By_class")}}</p> - -<div class="summary"> -<p><span class="seoSummary">এ পর্যন্ত সবকিছু ঠিকঠাক মত চলছে, কিন্তু এখন পর্যন্ত আমরা শুধুমাত্র একটি টেস্ট নিয়ে কাজ করছি। বাস্তবে ওয়েব অ্যাপের বিশাল দুনিয়ায় শত শত হাজার হাজার টেস্ট কেস আছে এবং অবশ্যই আমরা প্রত্যেকটি আলাদা আলাদা করে রান করাতে যাব না। এই মুহূর্তে আমাদের টেস্ট খোঁজা এবং এক্সিকিউট করার জন্য প্রয়োজন টেস্ট রানার ব্যবহার করা এবং এই নিবন্ধে আমরা সেটিই দেখব।</span></p> -</div> - -<h2 id="টেস্ট_রানার">টেস্ট রানার</h2> - -<p>টেস্ট রানার প্রকৃত টেস্টিং ফ্রেমওয়ার্কের জন্য বেশ ভালো সুযোগ দেয়। টেস্ট রানারের কাজ হল টেস্ট ডিজাইন করা, অ্যাট্রিবিউটের সাথে টেস্ট ট্যাগ করা (annotations) এবং রিপোরটিং ও অঞ্জাঞ্জ ফিচারের সুযোগ দেয়। বেশ কিছু সংখ্যক পাইথন টেস্ট রানার আছে কিন্তু এই ক্ষেত্রে আমরা পাইথনের নিজস্ব <strong>unittest</strong> ব্যবহার করব কারণ এটি সহজ , ফলপ্রসূ এবং পাইথন প্যাকেজের সাথেই পাওয়া যায়, আলাদা করে কিছু ইন্সটল করার প্রয়োজন হয় না।</p> - -<p>সাধারণত আপনি আপনার টেস্ট ৩টি স্ট্যান্ডার্ড সেকশনের মধ্যে ব্রেক করে ফেলেন; <code>setUp()</code>, টেস্ট এবং <code>tearDown()</code>, টেস্ট রানার সেট-আপের জন্য যথোপযুক্ত।<br> - <br> - <code>setUp()</code> এবং <code>tearDown()</code> ম্যাথোড প্রতি টেস্টের জন্য আলাদা করে অটোমেটিক্যালি রান করানো হয় এবং এতে আছেঃ</p> - -<ul> - <li>টেস্ট রান করানোর আগেই সেট-আপ করতে হবে, যেমন স্ক্রিন আনলক করা এবং ওপেন অ্যাপ কিল করা।</li> - <li>টেস্ট রান করানোর পর শীতলীকরণ ধাপগুলো অনুসরণ করতে হবে, যেমন Marionette সেশন সমাপ্ত করা।</li> -</ul> - -<p> আপনার আসল টেস্ট রান করানোর জন্য যেসব কোড দরকার তা হল সেট-আপের টেস্ট পার্টটি। এখন দেখা যাক কীভাবে আমরা দ্বিতীয় ও চতুর্থ অংশে করা বিল্ড আপে এটি প্রয়োগ করি।</p> - -<h2 id="টেস্ট_রান_করা_যুক্ত_করা_contact.py_unittest_এর_সাথে">টেস্ট রান করা_যুক্ত করা_contact.py unittest এর সাথে</h2> - -<p>unittest ব্যবহার করার জন্য প্রথমে আমাদের unittest ইম্পোরট করা দরকারঃ আপনার অন্যান্য ইম্পোরট লাইনের মধ্যে নিচেরটি যুক্ত করুনঃ</p> - -<pre class="brush: python">import unittest</pre> - -<p>এরপর আমাদের <code>TestContacts</code> ক্লাসের মধ্যে unittest পাস করে নিন এবং নিচের লাইনের মধ্যে আপনার <code>class</code> আপডেট করে নিনঃ</p> - -<pre class="brush: python">class TestContacts(unittest.TestCase):</pre> - -<p>এরপর আমরা নিচেরটি মুছে ফেলবঃ</p> - -<pre class="brush: python"> def __init__(self): - self.test_add_contacts()</pre> - -<p>টেস্টটিকে ইনিশিয়ালাইজ করলে তা unittest দ্বারা নিয়ন্ত্রিত হবে, তাই আমাদের এটি নিয়ন্ত্রণ করা লাগবে না। আপনার কোডের নিচে কোডের, নিচেরটি রিপ্লেস করেঃ</p> - -<pre class="brush: python">if __name__ == '__main__': - TestContacts()</pre> - -<p>এটি দিয়েঃ</p> - -<pre class="brush: python">if __name__ == '__main__': - unittest.main()</pre> - -<p>এবার আমরা তৈরি করব <code>setUp(self)</code> : <code>TestContacts</code> হল আমাদের ক্লাসের মধ্যে ব্যবহৃত ম্যাথড এবং নিচের ধাপগুলো এর ভেতরে রাখুনঃ</p> - -<ol> - <li>ম্যারিওনেট ইনিশিয়েট করে ম্যারিওনেট সেশন ওপেন করা</li> - <li>স্ক্রিন আনলক করুন</li> - <li>সব ওপেন অ্যাপ কিল করুন</li> - <li>কন্ট্যাক্ট অ্যাপ লোড করুন</li> -</ol> - -<p>ম্যাথডটি দেখতে এমন হওয়া উচিতঃ</p> - -<pre class="brush: python"> def setUp(self): - # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally - self.marionette = Marionette() - self.marionette.start_session() - - # Unlock the screen - self.unlock_screen() - - # kill all open apps - self.kill_all() - - # Switch context to the homescreen iframe and tap on the contacts icon - time.sleep(2) - home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe') - self.marionette.switch_to_frame(home_frame)</pre> - -<p>এখন <code>tearDown(self):</code> ম্যাথোড তৈরি করা। এই ক্ষেত্রে আমাদের Marionette সেশন সমাপ্ত করার জন্য কোড যুক্ত করা প্রয়োজন। ম্যাথোডটি এমন হওয়া উচিতঃ</p> - -<pre class="brush: python"> def tearDown(self): - # Close the Marionette session now that the test is finished - self.marionette.delete_session() -</pre> - -<p>এখন ঠিক আগের মত করেই টেস্টটি রান করানোর চেষ্টা করুতি।আপনি খেয়াল করে থাকবেন যে এখন আপনি passes এবং failures এর জন্য রিপোর্ট পাচ্ছেন। unittest বা py.test এর মত টেস্ট রানার ব্যবহার করার সুবিধা এটি।</p> - -<div class="note"> -<p><strong>নোটঃ</strong>: যদি আপনি কোথাও আটকে গিয়ে থাকেন তবে আপনার সাহায্যার্থে প্রচুর unittest গাইড রয়েছে ইন্টারনেটে। আমাদের পরামর্শ <a href="http://selenium-python.readthedocs.org/en/latest/getting-started.html">http://selenium-python.readthedocs.org/en/latest/getting-started.html</a> এবং <a href="http://assertselenium.com/2013/10/07/getting-started-with-python-webdriver/">http://assertselenium.com/2013/10/07/getting-started-with-python-webdriver/</a>. এগুলো পাইথন এবং ওয়েবড্রাইভারের জন্য, কিন্তু এখন পর্যন্ত সেগুলো ব্যবহারযোগ্য নয়।</p> -</div> - -<h2 id="রেফারেন্স_কোড">রেফারেন্স কোড</h2> - -<p>উদাহরণ হিসাবে, এই ধাপেও আমাদের ফাইনাল কোডটি নিচের মত দেখাবেঃ</p> - -<pre class="brush: python">import time -from marionette import Marionette -from marionette_driver import Wait -import unittest - - -class TestContacts(unittest.TestCase): - - def unlock_screen(self): - self.marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();') - - def kill_all(self): - self.marionette.switch_to_frame() - self.marionette.execute_async_script(""" - // Kills all running apps, except the homescreen. - function killAll() { - let manager = window.wrappedJSObject.AppWindowManager; - - let apps = manager.getApps(); - for (let id in apps) { - let origin = apps[id].origin; - if (origin.indexOf('homescreen') == -1) { - manager.kill(origin); - } - } - }; - killAll(); - // return true so execute_async_script knows the script is complete - marionetteScriptFinished(true); - """) - - def setUp(self): - # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally - self.marionette = Marionette() - self.marionette.start_session() - - # Unlock the screen - self.unlock_screen() - - # kill all open apps - self.kill_all() - - # Switch context to the homescreen iframe and tap on the contacts icon - time.sleep(2) - home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe') - self.marionette.switch_to_frame(home_frame) - - - def test_add_contacts(self): - contacts_icon = self.marionette.find_element('css selector', "#footer li[aria-label='Contacts']") - contacts_icon.tap() - - # Switch context back to the base frame - self.marionette.switch_to_frame() - Wait(self.marionette).until(lambda m: m.find_element('css selector', "iframe[data-url*='contacts']").is_displayed()) - - # Switch context to the contacts app - contacts_frame = self.marionette.find_element('css selector', "iframe[data-url*='contacts']") - self.marionette.switch_to_frame(contacts_frame) - - # Tap [+] to add a new Contact - self.marionette.find_element('id', 'add-contact-button').tap() - Wait(self.marionette).until(lambda m: m.find_element('id', 'save-button').location['y']== 0) - - # Type name into the fields - self.marionette.find_element('id', 'givenName').send_keys('John') - self.marionette.find_element('id', 'familyName').send_keys('Doe') - - # Tap done - self.marionette.find_element('id', 'save-button').tap() - Wait(self.marionette).until(lambda m: not m.find_element('id', 'save-button').is_displayed()) - - def tearDown(self): - # Close the Marionette session now that the test is finished - self.marionette.delete_session() - -if __name__ == '__main__': - unittest.main() - -</pre> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_7_writing_your_own_tests/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_7_writing_your_own_tests/index.html deleted file mode 100644 index 08ea77291c..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_7_writing_your_own_tests/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: 'পার্ট ৭: আপনার নিজস্ব টেস্ট লিখার পদ্ধতি' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests -tags: - - NeedsReview - - orvi -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_6_Marionette_By_class", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class")}}</p> -<div class="summary"> - <p><span class="seoSummary"><span style="line-height: 1.5;">ফায়ারফক্স ওএস এর জন্য অটোমেটিক টেস্ট লিখতে</span>এই পর্যন্ত আমরা আপনাকে যে পরিমাণ টুলস এবং তথ্য সরবরাহ করেছি তা আপনার নিজস্ব সহায়তা করবে। এর পাশাপাশি আপ করার এবং দ্রুত রানিং এর জন্য এইখানে যথেষ্ট পরিমাণ স্টেপ আছে । এই পার্টে আমরা অনেক গভীরে যাব যেখানে আপনি অনেক রিসোর্স এবং আইডিয়া পাবেন এবং এর পর আপনি এইখানে থেকে নিজস্ব কাজে উৎসাহিত হবেন। এখন আমরা আরো সামনে অগ্রসর হব যাতে আপনি নিজের টেস্ট নিজে করতে পারেন — এনজয়!</span></p> -</div> -<h2 id="রিসোর্সসমূহঃ">রিসোর্সসমূহঃ</h2> -<p>নিচের রিসোর্সগুলো খুব কাজের হবে যদি আপনি আপনার নিজের ইউনিট টেস্ট বিল্ড করতে চান।</p> -<ul> - <li><a href="/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS App Manager</a> ডিভাইসের অথবা সিমুলেটরের গাইয়া ডিরেক্টরী ডিবাগিং এর জন্য একটি গ্রেট টুল । আপনার লিখিত কোডগুলোকে যাচাই করে লোকেট করা এবং কিভাবে কোডগুলো কাজ করবে তা নির্দেশ করার জন্য এইটা একটা ভাল উপায়। </li> - <li>লিমিটেড কিন্তু ওভারহেড মেকানিজমের জন্য , আপনি কনসোলে এইচটিএমএল এর সোর্স ডাম্প করতে পারেন <code>print self.marionette.page_source</code> কমান্ড দিয়ে ।</li> - <li>অন্যথায় রো এইচটিএমএল মেটেরিয়ালের জন্য দেখুন <a href="https://github.com/mozilla-b2g/gaia/tree/master/apps">Gaia Git repo</a>.</li> - <li>Marionette কমান্ড সম্পর্কে আরো জানতে পড়ুন <a href="https://marionette_client.readthedocs.org/en/latest/">Marionette docs</a>।</li> -</ul> -<h2 id="নতুন_এবং_মোডিফাই_টেস্টের_জন্য_আইডিয়া">নতুন এবং মোডিফাই টেস্টের জন্য আইডিয়া</h2> -<p>এই সেকশন শুরু করার জন্য আপনাকে কিছু আইডিয়া দিবে। </p> -<p><span style="font-size: 1.7142857142857142rem; letter-spacing: -0.5px; line-height: 24px;"> test_add_contact.py মোডিফাইং </span></p> -<p>প্রথমে শুরু করা যাক আমরা যেগুলোর কাজ শুরু করেছি সেগুলোর মডিফাইয়িং দিয়েঃ</p> -<ol> - <li>টেস্ট কন্টাক্ট তৈরীর সময় প্রতিবার ইউনিক নাম আছে কিনা দেখুন। </li> - <li> <code>setUp()</code> স্টেপে সব কন্টাক্ট ডিলিট করুন।</li> - <li>আনলক করার আগে স্ক্রীন চালু করুন।</li> -</ol> -<p>এখন আরেকটি টেস্ট মেথড এড করুন। এইটাকে আপনি যা খুশি বলতে পারেন যতক্ষণ এর শুরুতে <code>test_</code> মেথড থাকে ।এই টেস্টটা নিচের মত কাজ করবে:</p> -<ol> - <li>কন্টাক্ট ওপেন ।</li> - <li>প্রথম টেস্টে যে নাম নিওয়া হয়েছে থেকে ভিন্ন নাম নিয়ে নতুন একটি কন্টাক্ট সৃষ্টি করুন।</li> - <li>এডিট মুডে গিয়ে কন্টাক্ট রি-এন্টার করুন।</li> - <li> <em>Company </em>নাম যুক্ত করুন।</li> - <li> <em>Done </em>ট্যাবে চাপ দিন।</li> - <li>দেখুন কোম্পানীর তালিকাভুক্ত হয়েছে।</li> -</ol> -<p>এখন আপনি যখন টেস্ট ফাইল চালু করবেন , তাহলে উভয় টেস্ট রান করা শুরু করবে। এখন আমরা টেস্ট অটোমেশনের শক্তি খুব কাছাকাছি থেকে লক্ষ্য করব— স্বয়ংক্রিয়ভাবে একটি টেস্ট সিরিজ চালানো এবং এর ফলাফল রিপোর্ট করার ক্ষমতা!</p> -<h3 id="টেস্টের_নতুন_কিছু_আইডিয়া">টেস্টের নতুন কিছু আইডিয়া </h3> -<ul> - <li>নতুন কন্টাক্ট তৈরি করুন, কন্টাক্টটি সম্পাদনা করুন এবং নাম পরিবর্তন করুন। পরিবর্তিত নামটি স্ক্রীনে দেখা যাওয়া উচিত।</li> - <li>কন্টাক্ট তৈরি করুন এবং ফেভারিট হিসেবে যুক্ত করতে এটিকে 'star' দিয়ে মার্ক করুন। তাহলে প্রধান স্ক্রীণে এইটা * (starred) ক্যাটাগরির নিচে তালিকাভুক্ত হবে। </li> - <li>ফোন নাম্বারের সাহায্যে একটি কন্টাক্ট তৈরী করুন। কন্টাক্ট রেকর্ড ওপেন করার পর "Message" আইকনে ক্লিক করুন। এখন , ম্যাসেজ অ্যাপটি চালু হয়ে যাওয়া উচিত যেটির প্রাপক অংশে আপনার কন্টাক্টি দেখাবে। </li> -</ul> -<p> </p> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_8_using_a_base_class/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_8_using_a_base_class/index.html deleted file mode 100644 index 9450f9245b..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_8_using_a_base_class/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: 'অংশ ৮: একটি বেস ক্লাস ব্যবহার করা' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class -tags: - - B2G - - Gaia - - Marionette - - gaia-ui-tests - - tests - - অটোমেশন - - পাইথন - - ফায়ারফক্স ওএস -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class ---- -<p>{{PreviousNext("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests", "Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_9_app_objects")}}</p> - -<div class="summary"> -<p><span class="seoSummary"><span id="result_box" lang="bn"><span class="hps">এখন <span id="result_box" lang="bn"><span class="hps">একাধিক</span> </span></span></span>টেস্টের পর <span id="result_box" lang="bn"><span class="hps">আপনি</span> <span class="hps">সম্ভবত আপনি</span> <span class="hps">আপনার অগ্রগতি</span> <span class="hps">সম্পর্কে</span> <span class="hps">বেশ ভাল</span> <span class="alt-edited hps">অনুভব করছে</span></span>ন। <span class="short_text" id="result_box" lang="bn"><span class="hps">তবে</span> <span class="hps">আরও</span> <span class="hps">কোড</span> <span class="hps">দক্ষতা</span> <span class="alt-edited hps">উন্নত করার</span> <span class="alt-edited hps">অন্যান্য</span> <span class="hps">উপায় আছে</span></span>— আপনি হয়তো <span id="result_box" lang="bn"><span class="hps">খেয়াল করছেন যে </span></span><span id="result_box" lang="bn"><span class="hps">এ পর্যন্ত আপনাকে</span></span> <code>setUp()</code>এবং একটি <code>tearDown()</code><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">মেথড <span class="short_text" id="result_box" lang="bn"><span class="hps">প্রতিটি</span> <span class="hps">ফাইলে <span class="short_text" id="result_box" lang="bn"><span class="hps">অন্তর্ভুক্ত</span> <span class="hps">করতে হয়েছে</span></span></span></span></span></span>, যেগুলো <span id="result_box" lang="bn"><span class="hps">বর্তমান কন্সট্রাক্টর দিয়ে পরিচালিত হচ্ছে</span></span> <span id="result_box" lang="bn"><span class="hps">আমরা এই</span> <span class="alt-edited hps">সিরিজে দেখেছি</span></span>। <span id="result_box" lang="bn"><span class="hps">আপনি</span> <span class="hps">কয়েক</span> <span class="hps">ডজন</span> <span class="hps">পরীক্ষা</span> <span class="hps">থেকে থাকে</span> <span class="hps">তাহলে</span> <span class="alt-edited hps">সেই</span> <span class="hps">কোড</span> <span class="hps">অনুলিপি</span> <span class="hps">অনেক</span></span>! <span class="short_text" id="result_box" lang="bn"><span class="hps">এই নিবন্ধে</span></span> আমরা দেখব কিভাবে <code>setUp()</code>/<code>tearDown()</code> কোড একটি <code>TestBase</code> ক্লাসে সকল টেস্টের জন্য রাখা যায়, <span id="result_box" lang="bn"><span class="hps">যা তারপর</span> <span class="hps">প্রতিটি</span> <span class="hps">টেস্ট</span> <span class="hps">ফাইলের</span> <span class="hps">মধ্যে ইম্পোর্ট</span> <span class="hps">করা যাবে।</span></span></span></p> -</div> - -<h2 id="test_base.py">test_base.py</h2> - -<p><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">প্রথমত</span></span>, একটি নতুন ফাইল তৈরি করুন <code>test_base.py</code>, <span id="result_box" lang="bn"> </span>আপনার টেস্ট কেইস হিসেবে একিই ডিরেক্টরির মধ্যে।</p> - -<p>পরবর্তীতে, আপনার প্রয়োজনীয় স্টেটমেন্ট যা সাধারণ সেট আপ এর সাথে সম্পর্কযুক্ত (<code>unittest</code>, <code>Marionette</code> and <code>time</code>) ফাইলটিতে সরিয়ে ফেলুন, একটি <code>TestBase</code> ক্লাস সহ যার মধ্যে <code>setUp()</code> and <code>tearDown()</code> মেথডগুলো, এবং সাহায্যকারি সাধারণ helper ফাংশনগুলো আছে (such as <code>unlock_screen()</code>)। ফাইলটি কিছুটা এরকম দেখানো উচিত:</p> - -<pre class="brush: python">import time -import unittest -from marionette import Marionette - - -class TestBase(unittest.TestCase): - - def unlock_screen(self): - self.marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();') - - def kill_all(self): - self.marionette.switch_to_frame() - self.marionette.execute_async_script(""" - // Kills all running apps, except the homescreen. - function killAll() { - let manager = window.wrappedJSObject.AppWindowManager; - - let apps = manager.getApps(); - for (let id in apps) { - let origin = apps[id].origin; - if (origin.indexOf('homescreen') == -1) { - manager.kill(origin); - } - } - }; - killAll(); - // return true so execute_async_script knows the script is complete - marionetteScriptFinished(true); - """) - - def setUp(self): - # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally - self.marionette = Marionette() - self.marionette.start_session() - - # Unlock the screen - self.unlock_screen() - - # kill all open apps - self.kill_all() - - # Switch context to the homescreen iframe and tap on the contacts icon - time.sleep(2) - home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe') - self.marionette.switch_to_frame(home_frame) - - - def tearDown(self): - # Close the Marionette session now that the test is finished - self.marionette.delete_session() -</pre> - -<h2 id="আপনার_টেস্ট_ফাইল_আপডেট_করা">আপনার টেস্ট ফাইল <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">আপডেট করা</span></span></h2> - -<p>আপনার <code>test_base.py</code> ফাইল তৈরি হওয়ার পর, আপনাকে আপনার টেস্ট ফাইলে <code>TestBase</code> ইমপোর্ট করতে হবে, এবং টেস্ট ক্লাসগুলো <code>TestBase</code> ক্লাস প্রসারিত করতে পরিবরতন করতে হবে:</p> - -<pre class="brush: python">import unittest -from marionette import Wait -from marionette import By -from test_base import TestBase - -class TestContacts(TestBase): - - def test(self): - # Tests in here - -if __name__ == '__main__': - unittest.main()</pre> - -<p><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">পুনরায়</span> <span class="hps">আপনার টেস্ট</span> <span class="hps">ফাইল</span> <span class="hps">চালানোর</span> <span class="hps">চেষ্টা করুন</span></span>।</p> - -<p><span id="result_box" lang="bn"><span class="hps">এটা এখন অনেক</span></span> বেশি বোঝা না যেতে পারে কিন্তু যখন আপনার কয়েক ডজন অথবা শতাধিক টেস্ট থাকবে এটি আসলেই অনেক কোড ডুপ্লিকেট হওয়ার সমস্যা যাতে না হয় সাহায্য করবে।</p> diff --git a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_9_app_objects/index.html b/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_9_app_objects/index.html deleted file mode 100644 index 1a738f5ff7..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/gaia-ui-tests/part_9_app_objects/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'অংশ ৯: অ্যাপ্লিকেশন বস্তুর প্রতিলিপিকরণ কমাতে' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_9_app_objects -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_9_app_objects ---- -<p>{{Previous("Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class")}}</p> -<div class="summary"> - <p><span class="seoSummary">স্বয়ংক্রিয় পরীক্ষায় অ্যাবস্ট্রাক্ট কোডে আমরা <code>app বস্তুগুলো ঘন ঘন ব্যবহার করে থাকি।</code> ইহা কোড এবং স্থান নির্ণয়কারীর প্রতিলিপি করা কমায়। যদি আমাদের কোন সাধারণ বিভাগের কোড পরিবর্তন প্রয়োজন হয় তাহলে আমরা তা শুধুমাত্র একটি<code> app</code> বস্তু পরিবর্তন করতে পারবো, ১০ অথবা ২০টি পরীক্ষণীয় ফাইলের পরিবর্তন না করে। এই রচনাটি কিভাবে <code>app</code> বস্তু ব্যবহার করতে হয় তার মৌলিক তথ্য জানায়।</span></p> -</div> -<h2 id="অ্যাপ্লিকেশন_বস্তু_শুরু_হচ্ছে">অ্যাপ্লিকেশন বস্তু: শুরু হচ্ছে</h2> -<p><code>app</code> বস্তু হল একটি পাইথন ক্লাস যাতে পৃষ্ঠার উপর কার্যক্রম ঘটানোর নিয়ম এবং বৈশিষ্ট্যগুলো বিদ্যমান থাকে। চলুন একটি তাত্বিক উদাহরণের মাধ্যমে দেখা যাক কিভাবে এগুলো ব্যবহৃত হয়ে থাকে।</p> -<h3 id="homepage.py">homepage.py</h3> -<p>এখানে একটি ফ্রেম রয়েছে সুডো-কোড সহ যা আমরা হোমপেজ অ্যাপ্লিকেশনের জন্য ব্যবহার করি।</p> -<pre class="brush: python">class Homepage: - __init__(self, marionette): - # Marionette is passed in so that the object can use it - self.marionette = marionette - - def switch_to_homepage_frame(self): - # Code for switching to System then to Homepage frame - - def tap_contacts_icon(self): - # Code to tap the icon - # Switch to Contacts frame - # Now we return the Contacts app object as it has focus - from contacts import Contacts - return Contacts(self.marionette)</pre> -<h3 id="contacts.py">contacts.py</h3> -<p>এবং এটা আমরা কন্টাক্ট অ্যাপ্লিকেশনের জন্য ব্যবহার করে থাকি, আবারও কিছু সুডো-কোড সহ দেয়া হল।</p> -<pre class="brush: python">class Contacts: - _new_contact_button = (By.ID, ‘id’) - - def tap_new_contact(self): - # Tap new contact icon - # Wait for event - - def type_given_name(self, name_string): - # element.send_keys(name_string)</pre> -<h3 id="test_contacts.py"><strong>test_contacts.py</strong></h3> -<p>কিভাবে একটি পরীক্ষণীয় প্রসঙ্গ কাজ করে তা বুঝতে, এখানে একটি দ্রুত উদাহরণ রয়েছে যাতে <code>Homepage</code> শ্রেণীর ব্যবহার রয়েছে:</p> -<pre class="brush: python">from homepage import Homepage - -def test_add_contact(self): - homepage = Homepage(self.marionette) - homepage.switch_to_homepage_frame() - -contacts = homepage.tap_contacts_icon() -contacts.tap_new_contact()</pre> -<h2 id="আপনার_পরীক্ষণগুলো_হালনাগাদ_হচ্ছে">আপনার পরীক্ষণগুলো হালনাগাদ হচ্ছে</h2> -<p>এখান থেকে আমরা আপনাকে নতুন অ্যাপ্লিকেশন বস্তুর সিস্টেম ব্যবহার করতে আপনার সকল পরীক্ষণীয় ফাইলগুলো হালনাগাদ করতে চ্যালেন্জ প্রদান করতে চাই।</p> -<p>ইহা একটি কঠিন কাজ এবং আপনি যদি পাইথন শ্রেণী কাঠামোর সাথে পরিচিত না হন তাহলে আপনাকে সূত্র এবং কোডের উদাহরণের জন্য কিছু বইয়ের পরামর্শ দরকার।</p> -<p>যখন আপনি আদর্শভাবে শেষ করবেন তখন আপনার পরীক্ষণীয় ফাইলের মধ্যে একটি পরিস্কার বিচ্ছিন্নতা থাকবে:</p> -<ol> - <li><code>TestBase</code> এ <code>setUp()</code> এবং <code>tearDown()</code> নীতিগুলো বিদ্যমান থাকে</li> - <li><code>app</code> বস্তুগুলো পৃষ্ঠার পারস্পরিক ক্রিয়া এবং স্থান নির্ণয়কারী ধারণ করে</li> - <li>আপনার পরীক্ষণীয় ফাইলগুলো শুধু পরীক্ষণীয় ধাপগুলো ধারণ করে।</li> -</ol> -<p>আপনার মঙ্গল কামনা করছি!</p> diff --git a/files/bn/archive/b2g_os/automated_testing/index.html b/files/bn/archive/b2g_os/automated_testing/index.html deleted file mode 100644 index 5ac7d6096d..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: ফায়ারফক্স OS এর স্বয়ংক্রিয় পরীক্ষা -slug: Archive/B2G_OS/Automated_testing -tags: - - Automated testing - - B2G - - QA - - Testing - - টেস্টিং - - পরীক্ষা -translation_of: Archive/B2G_OS/Automated_testing ---- -<div class="summary"> -<p><span id="result_box" lang="bn"><span class="hps">ফায়ারফক্স</span> OS <span class="hps"><span id="result_box" lang="bn"><span class="hps">এখনও <span id="result_box" lang="bn"><span class="alt-edited hps">উন্নয়নাধীন,<span id="result_box" lang="bn"><span class="hps">এবং নতুন</span> <span class="hps">হার্ডওয়্যারের</span> <span class="hps">জন্য সমর্থন</span> <span class="hps">খুব দ্রুত-ই দেওয়া হবে। </span><span><span id="result_box" lang="bn"><span class="hps">কিভাবে <span id="result_box" lang="bn"><span class="alt-edited hps">এটি</span> <span class="hps">পরীক্ষা করতে </span></span></span></span></span></span></span></span></span></span></span></span>হয় তা জানা <span id="result_box" lang="bn"><span class="hps">গুরুত্বপূর্ণ।</span></span><span id="result_box" lang="bn"><span class="alt-edited hps">এই পৃষ্ঠাটি কিছু নিবন্ধ প্রস্তাব করে <span id="result_box" lang="bn"><span class="alt-edited hps">যা <span id="result_box" lang="bn"><span class="hps">চলমান <span id="result_box" lang="bn"><span class="hps">বিভিন্ন</span> <span class="hps">পরীক্ষা,</span> <span class="hps">অটোমেশন</span><span>, এবং <span id="result_box" lang="bn"><span class="hps">ফলাফল <span id="result_box" lang="bn"><span class="hps">রিপোর্ট এবং</span> <span class="hps">ট্র্যাকিং সহ <span id="result_box" lang="bn"><span class="hps">ফায়ারফক্স</span> OS <span class="hps">বিভিন্ন দিক</span> <span class="hps">সম্পর্কে তথ্য</span> <span class="hps">প্রদান করে।</span></span></span></span></span></span></span></span></span></span></span></span> </span></span><span class="seoSummary"> </span></p> -</div> - -<h2 id="শুরু_করুন!">শুরু করুন!</h2> - -<h2 id="ফায়ারফক্স_OS_এর_পরীক্ষা_চালানো_ডেভেলপারদের_জন্য_একটি_নির্দেশিকা"><a href="/bn-BD/Firefox_OS/Running_Tests_on_Firefox_OS_for_Developers" style="font-size: 14px; line-height: 1.5;">ফায়ারফক্স OS এর পরীক্ষা চালানো : ডেভেলপারদের জন্য একটি <span id="result_box" lang="bn"><span class="hps">নির্দেশিকা</span></span></a></h2> - -<dl> - <dd><span id="result_box" lang="bn"><span class="hps">পরীক্ষা</span> <span class="alt-edited hps">চালানো <span id="result_box" lang="bn"><span class="alt-edited hps">শুরু </span></span></span></span>করার ওপর একটি ছোট, এবং ডেভেলপারদের-জন্য-লিখা গাইড।<span id="result_box" lang="bn"><span class="hps"> আপনি</span> <span class="hps">মজিলা</span> <span class="hps">এর</span> <span class="alt-edited hps">টেস্ট এবং</span> <span class="hps">স্বয়ংক্রিয়তা</span> <span class="alt-edited hps">সিস্টেম</span> <span class="alt-edited hps">চালানো</span> <span class="hps">অভিজ্ঞ</span> <span class="hps">না হলে </span></span>আপনার এখান থেকে শুরু করা উচিত। আপনি যদি অভিজ্ঞ হন, তাহলে সম্ভবত আপনার <span id="result_box" lang="bn"><span class="hps">একটি ধারণা</span> <span class="hps">আছে যে আপনি কি টেস্ট, কিভাবে পরিচালনা করতে চান, <span id="result_box" lang="bn"><span>এবং আপনি</span> <span class="hps">নীচের</span> <span class="hps">আরো নির্দিষ্ট, </span> <span class="hps">বিস্তারিত</span> <span class="hps">গাইড</span> <span class="hps">এড়িয়ে</span> <span class="hps"><span id="result_box" lang="bn"><span class="hps">যেতে </span></span>পারেন।</span></span></span></span></dd> -</dl> - -<h2 id="গায়া_পরীক্ষাসমূহ"><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">গায়া</span> <span class="hps">পরীক্ষা</span></span>সমূহ</h2> - -<p><span><span class="null">এই নিবন্ধগুলোতে গায়া টেস্ট কওয়ার প্রাথমিক </span></span>পদ্ধতিগুলো বর্ণনা করেছে।</p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/gaia-ui-tests"><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">গায়া</span> <span class="alt-edited hps">UI</span> <span class="hps">পরীক্ষা</span></span></a></dt> - <dd><span id="result_box" lang="bn"><span class="hps"><span id="result_box" lang="bn"><span class="alt-edited hps">গায়া</span> <span class="atn hps">UI এর <span id="result_box" lang="bn"><span class="alt-edited">পারস্পরিক ক্রিয়া</span> (ইন্টারেকশন) <span class="hps">এবং</span> <span class="alt-edited hps">ফিচারগুলো পাইথনে টেস্ট করুন।</span></span></span></span></span></span></dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_integration_tests"><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">গায়া</span> <span class="hps">ইন্টিগ্রেশন</span> <span class="hps">পরীক্ষা</span></span></a></dt> - <dd>গায়ার <span id="result_box" lang="bn"><span class="hps">জাভাস্ক্রিপ্ট</span>-<span class="hps">ইন্টিগ্রেশন টেস্ট করা</span></span>, Marionette এর উপর ভিত্তি করে।</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_unit_tests"><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">গায়া</span> <span id="result_box" lang="bn"><span class="alt-edited hps">ইউনিট</span></span>-<span class="hps">টেস্ট</span></span></a></dt> - <dd><span id="result_box" lang="bn"><span class="alt-edited hps">গায়া</span> <span class="alt-edited hps">ইউনিট</span> টেস্ট</span> কোন UI <span id="result_box" lang="bn"><span class="alt-edited">ইন্টারঅ্যাকশন ছাড়া </span></span>; <span id="result_box" lang="bn"><span class="hps">জাভাস্ক্রিপ্ট</span> এ <span class="hps">লেখা</span><span>,</span> <span class="alt-edited hps">Marionette</span> <span class="hps">ভিত্তিক</span> <span class="alt-edited hps">নয়</span></span>।</dd> - <dt><a href="/en-US/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests"><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">গায়া</span> <span class="alt-edited hps">কার্যকারিতা</span> (পার্ফর্মেন্স) <span class="hps">পরীক্ষা</span></span></a></dt> - <dd><span id="result_box" lang="bn"><span class="alt-edited hps"><span id="result_box" lang="bn"><span class="alt-edited hps"><span id="result_box" lang="bn"><span class="hps">অভ্যন্তরীণ</span> <span class="hps">যন্ত্রানুষঙ্গের</span> <span class="hps">উপর ভিত্তি </span></span></span></span>করে গায়া</span> <span class="hps">অ্যাপ্লিকেশনের</span> <span class="alt-edited hps">কর্মক্ষমতা পরিমাপ করে</span></span>। in-tree হচ্ছে এর টেস্টিং পদ্ধতি (হারনেস)।</dd> -</dl> - -<h2 id="B2G_পরীক্ষাসমূহ">B2G <span class="short_text" id="result_box" lang="bn"><span class="hps">পরীক্ষা</span></span>সমূহ</h2> - -<p><span class="short_text" id="result_box" lang="bn"><span class="hps">নিচের</span></span> <span class="short_text" id="result_box" lang="bn"><span class="hps">নির্দেশনাগুলো <span class="short_text" id="result_box" lang="bn"><span class="hps">B2G</span> এর বিভিন্ন <span class="hps">কার্যকারিতা</span> <span class="hps">পরীক্ষা করার বিভিন্ন পদ্ধতি নিয়ে </span></span> আলোচনা</span></span> করে<span class="short_text" id="result_box" lang="bn"><span class="hps">। </span></span></p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Mochitests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Mochitests">Mochitests</a></dt> - <dd>Gecko এর ফাংশনাল বা কার্যকারিতা<span id="result_box" lang="bn"> <span class="hps">এবং</span> <span class="hps">এপিআই</span> <span class="hps">পরীক্ষা </span></span>- HTML & JS <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">ভিত্তিক</span></span>। <span class="short_text" id="result_box" lang="bn"><span class="hps">কোন</span> <span class="alt-edited hps">গায়া</span> ইন্টারেকশন<span class="alt-edited hps"> নেই।</span></span></dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Reftests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Reftests">Reftests</a></dt> - <dd>Gecko <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">রেন্ডার ঠিকমত হচ্ছে কিনা তার পরীক্ষা<span class="short_text" id="result_box" lang="bn"><span class="hps">।</span></span></span></span></dd> - <dt><a href="/en-US/docs/Marionette/Marionette_JavaScript_Tests" title="/en-US/docs/Marionette/Marionette_JavaScript_Tests">WebAPI টেস্ট</a></dt> - <dd>Gecko JS-<span class="short_text" id="result_box" lang="bn"><span class="hps">ভিত্তিক</span> <span class="hps">WebAPI</span> <span class="hps">পরীক্ষা</span></span>। <span id="result_box" lang="bn"><span class="alt-edited hps">এগুলোর অনেকগুলোই এমুলেটরে করতে হয়। </span></span></dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/XPCShell" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/XPCShell">xpcshell টেস্ট</a></dt> - <dd>Gecko XPCOM APIs এর <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">হেডলেস</span> <span class="hps">পরীক্ষা।</span></span></dd> - <dt><a href="https://github.com/mozilla/b2gperf" title="https://github.com/mozilla/b2gperf">B2GPerf</a></dt> - <dd><span id="result_box" lang="bn"><span class="alt-edited hps"><span id="result_box" lang="bn"><span class="hps">অভ্যন্তরীণ</span> <span class="hps">যন্ত্রানুষঙ্গের</span> <span class="alt-edited hps">উপর ভিত্তি করে </span></span>গায়া</span> <span class="hps">অ্যাপ্লিকেশন</span> এর <span class="alt-edited hps">কর্মক্ষমতা পরিমাপ করে </span></span>।</dd> - <dt><a href="https://wiki.mozilla.org/Project_Eideticker" title="https://github.com/mozilla/eideticker">Eideticker</a></dt> - <dd><span id="result_box" lang="bn"><span class="hps"><span id="result_box" lang="bn"><span class="hps">ধারনকৃত</span></span> <span id="result_box" lang="bn"><span class="hps">ভিডিও এর উপর ভিত্তি করে </span></span>ফায়ারফক্স</span> <span class="hps">ওএস</span> </span>এর জন্য <span id="result_box" lang="bn"><span class="hps">কর্মক্ষমতা</span> <span class="hps">পরিমাপ করে</span></span><span id="result_box" lang="bn"><span class="hps">।</span></span></dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/endurance_tests">Endurance tests</a></dt> - <dd><span id="result_box" lang="bn"><span class="alt-edited hps"><span id="result_box" lang="bn"><span class="alt-edited hps">দীর্ঘ সময় ধরে এবং পুনঃপুনঃ চলতে পারে (repetitive) এমন <span id="result_box" lang="bn"><span class="hps">পরীক্ষা</span></span></span></span></span></span><span id="result_box" lang="bn"><span class="hps"><span id="result_box" lang="bn"><span class="alt-edited hps"> যা <span id="result_box" lang="bn"><span class="hps">মেমরি</span> <span class="alt-edited hps">অপচয়</span> <span class="hps">এবং স্টেবিলিটি বা স্থায়িত্ব</span> <span class="hps">সমস্যা</span> <span class="alt-edited hps">বের করতে ব্যবহৃত হয়।</span></span></span></span></span></span></dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/MTBF_tests">MTBF টেস্ট</a></dt> - <dd>রিস্টার্ট করে না এমন গায়া-ui-টেস্ট এর ভিত্তি করে বানানো টেস্ট ফ্রেমওয়ার্ক। This is a test framework based on non-restart gaia-ui-test. It tries to locate all kinds of issue prevents tests from running in a long time. (বর্তমানে তাইওয়ান এর QA টিম দ্বারা এটি নির্মিত হচ্ছে)</dd> - <dt><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">মেমরি</span> <span class="alt-edited hps">টেস্ট</span> <span class="hps">-</span> <span class="hps">শীঘ্রই আসছে</span></span></dt> - <dd><span id="result_box" lang="bn"><span class="alt-edited hps">মজিলা</span><span class="atn">-</span><span>সেন্ট্রাল এর <span id="result_box" lang="bn"><span class="hps">কমিট <span id="result_box" lang="bn"><span class="alt-edited hps">দ্বারা <span id="result_box" lang="bn"><span class="hps">পুনরাবৃত্তিমূলক</span> <span class="hps">পরীক্ষা চলে,</span></span></span></span></span></span></span></span> <a href="https://areweslimyet.com/" title="https://areweslimyet.com/">https://areweslimyet.com/</a> এ <span id="result_box" lang="bn"><span class="hps">রিপোর্ট করে</span></span>, <span id="result_box" lang="bn"><span class="hps">মেমরির ব্যবহার</span> <span class="alt-edited hps">করতে সমস্যা</span> <span class="alt-edited hps">খুঁজে বের</span> <span class="alt-edited hps">করার জন্য <span id="result_box" lang="bn"><span class="alt-edited hps">নির্মিত।</span></span></span></span></dd> -</dl> - -<div class="almost_half_cell" id="gt-res-content"> -<h2 dir="ltr" id="সহায়তামূলক_ডকুমেন্টেশন" style="zoom: 1;"><span class="short_text" id="result_box" lang="bn"><span class="hps">সহায়তামূলক</span> <span class="hps"><span class="short_text" id="result_box" lang="bn"><span class="hps">ডকুমেন্টেশন</span></span></span></span></h2> -</div> - -<p><span id="result_box" lang="bn"><span class="hps">এই বিভাগ <span id="result_box" lang="bn"><span class="alt-edited hps">সহায়তাকারী</span> <span class="hps">প্রযুক্তির</span> <span class="hps">কিছু</span> <span class="hps">লিঙ্ক</span> <span class="hps">প্রদান করে</span></span></span></span> <span id="result_box" lang="bn"><span class="alt-edited hps">যা <span id="result_box" lang="bn"><span class="hps">মজিলা</span> <span class="hps">এর</span> <span class="hps">পরীক্ষা</span></span></span></span> <span id="result_box" lang="bn"><span class="hps">সমর্থন করে, <span id="result_box" lang="bn"><span class="alt-edited hps">যার <span id="result_box" lang="bn"><span class="alt-edited hps">সম্পর্কে আপনি</span> <span class="hps">আরও তথ্য পেতে</span> <span class="hps">চাইতে পারেন।</span></span></span></span></span></span></p> - -<dl> - <dt><a href="/en-US/docs/Marionette" title="/en-US/docs/Marionette">Marionette</a></dt> - <dd><span id="result_box" lang="bn"><span class="hps">একটি</span> <span class="alt-edited hps">রিমোট</span> <span class="alt-edited hps">টেস্ট</span> <span class="hps">ড্রাইভার, <span id="result_box" lang="bn"><span class="hps">সেলেনিয়াম</span> <span class="hps">WebDriver </span></span></span></span>ভিত্তিক।</dd> - <dt><a href="/en-US/docs/Marionette/Marionette_JavaScript_Tools" title="/en-US/docs/Marionette/Marionette_JavaScript_Tools">Marionette JavaScript tests</a></dt> - <dd><span class="short_text" id="result_box" lang="bn"><span class="hps">একটি</span> <span class="hps">node.js</span> <span class="hps">ভিত্তিক</span> <span class="hps">রানার <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">Marionette</span> <span class="alt-edited hps">এর জন্য।</span></span></span></span></dd> - <dt><a href="/en-US/docs/Marionette/Python_Marionette" title="/en-US/docs/Marionette/Python_Marionette">Marionette Python tests</a></dt> - <dd> <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">একটি</span> <span class="hps">পাইথন</span> <span class="hps">রানার </span></span>Marionette <span class="short_text" id="result_box" lang="bn"><span class="hps"><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">এর জন্য।</span></span></span></span></dd> - <dt> </dt> - <dt>খেয়াল করুনঃ যদি আপনি কোন প্রোডাকশন বিল্ডে Marionette চালাতে চান (গায়া ইন্ট্রিগেশন টেস্ট, গায়া ui টেস্ট ইত্যাদি চালানোর জন্য। ) আপনই <a href="https://github.com/mozilla-b2g/marionette-extension">Marionette কে এক্সটেনশন হিসেবে ইন্সটল করতে পারেন</a> (বর্তমানে এটি শুধু ১.৩ বিল্ডগুলোর জন্যই প্রযোজ্য তবে আরও সাপোর্ট ভবিষ্যতে যোগ করা হবে।)</dt> -</dl> - -<h2 id="ক্রমাগত_ইন্টিগ্রেশন_এবং_ফলাফল_রিপোর্টিং"><span class="short_text" id="result_box" lang="bn"><span class="hps">ক্রমাগত</span> <span class="hps">ইন্টিগ্রেশন</span> <span class="alt-edited hps">এবং ফলাফল</span> <span class="hps">রিপোর্টিং</span></span></h2> - -<p><span id="result_box" lang="bn"><span class="hps">নিম্নলিখিত</span> <span class="hps">নিবন্ধ</span>গুলো <span class="alt-edited hps">ধারাবাহিক</span> <span class="hps">ইন্টিগ্রেশন সম্পন্ন, ফলাফল রিপোর্ট, সংরক্ষণ এবং এসব ফলাফলের বিশ্লেষণ করতে মজিলা'র পদ্ধতিগুলো নিয়ে আলোচনা করে।</span></span></p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/TBPL">TBPL</a></dt> - <dd> TBPL ভিত্তিক টেস্ট এবং বিল্ড বোঝার জন্য।</dd> - <dt><a href="https://wiki.mozilla.org/QA/Execution/Web_Testing/Automation/Jenkins">Jenkins</a></dt> - <dd><span id="result_box" lang="bn"><span class="alt-edited hps">জেনকিন্সের</span> <span class="hps">মাধ্যমে</span> <span class="hps">প্রকৃত</span> <span class="alt-edited hps">ডিভাইসের উপর চালানো</span> <span class="alt-edited hps">হয় যে</span> <span class="alt-edited hps">টেস্ট</span></span>।</dd> - <dt><a href="https://wiki.mozilla.org/B2G/Datazilla" title="https://wiki.mozilla.org/B2G/Datazilla">Datazilla</a></dt> - <dd><a href="https://datazilla.mozilla.org/b2g/" title="https://datazilla.mozilla.org/b2g/">Datazilla dashboard</a> এ কোন <span id="result_box" lang="bn"><span class="alt-edited hps">কার্যকারিতা</span> <span class="alt-edited hps">টেস্ট <span id="result_box" lang="bn"><span class="alt-edited hps">রিপোর্ট করা হচ্ছে তা বোঝে</span></span></span></span> , এবং <span id="result_box" lang="bn"><span class="alt-edited hps">সেই</span> <span class="alt-edited hps">টেস্টগুলো কি <span id="result_box" lang="bn"><span class="alt-edited hps">পদক্ষেপ নেয়।</span></span></span></span></dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/Test_Execution_Chart" title="/en-US/docs/Mozilla/Firefox_OS/Testing/Test_Execution_Chart">Test execution chart</a></dt> - <dd><span id="result_box" lang="bn"><span class="hps">একটি</span> <span class="hps">চার্ট যা দেখায় কোন টেস্ট পরিচালনা করা হচ্ছে</span></span> — কোন <span id="result_box" lang="bn"><span class="hps">ডিভাইস নিয়ে এবং কোথায়</span></span> — এবং কোন <span id="result_box" lang="bn"><span class="alt-edited hps">প্ল্যাটফর্ম</span> <span class="hps">প্রতিটি পরীক্ষার</span> <span class="hps">জন্য</span> <span class="hps">সমর্থিত।</span></span></dd> -</dl> - -<h2 class="Community" id="Community" name="Community"><span class="short_text" id="result_box" lang="bn"><span class="hps">ইউনিট</span> <span class="hps">টেস্টিং</span> <span class="alt-edited hps">ফ্রেমওয়ার্কের</span> <span class="hps">ভিডিও</span></span></h2> - -<div class="intrinsic-wrapper"><div class="intrinsic-container "><iframe src="https://www.youtube.com/embed/LxnRIm0wLLo?rel=0&html5=1"></iframe></div></div> - -<dl> - <dt> </dt> - <dd> </dd> -</dl> diff --git a/files/bn/archive/b2g_os/automated_testing/marionette_for_interactive_python/index.html b/files/bn/archive/b2g_os/automated_testing/marionette_for_interactive_python/index.html deleted file mode 100644 index b3082b1bf1..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/marionette_for_interactive_python/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: ইন্টারেক্টিভ পাইথন এর জন্য Marionette -slug: Archive/B2G_OS/Automated_testing/Marionette_for_interactive_Python -tags: - - গাইড - - ফায়ারফক্স ওএস -translation_of: Archive/B2G_OS/Automated_testing/Marionette_for_interactive_Python ---- -<p><span id="result_box" lang="bn"><span class="hps">এই টিউটোরিয়ালটি <span id="result_box" lang="bn"><span class="hps">অনুমান </span></span></span></span>করে আপনি <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Setting_up_Marionette" title="https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Setting_Up_Marionette_for_B2G">set up Marionette for B2G</a> সেট আপ করেছেন।</p> - -<p><span id="result_box" lang="bn"><span class="hps">একটি টার্মিনাল</span> <span class="hps">খুলুন এবং</span> <span class="hps">ইন্টারেক্টিভ</span> <span class="hps">প্রম্পট</span> <span class="hps">পেতে</span> <span class="hps">পাইথন</span> <span class="alt-edited hps">চালু করুন</span></span>:</p> - -<p><code>$ python</code></p> - -<p><span id="result_box" lang="bn"><span class="hps">ইন্টারেক্টিভ</span> <span class="hps">প্রম্পট</span> <span class="hps">থেকে</span></span>, <span id="result_box" lang="bn"><span class="alt-edited hps">ইন্টারেক্টিভ পদ্ধতিতে</span> <span class="hps">একটি</span></span> Marionette <span id="result_box" lang="bn"><span class="alt-edited hps">সেশন</span> <span class="hps">ডাকা</span>র জন্য <span class="hps">প্রয়োজনীয়</span> <span class="hps">কমান্ড পরিচালনা করুন</span></span>:</p> - -<p><span style="font-family: courier new,courier,monospace;">>>> from marionette import Marionette<br> - >>> marionette = Marionette('localhost', 2828)<br> - >>> marionette.start_session()<br> - u'session-b2g'</span></p> - -<p>এখানে, আমরা দেখি যে <span id="result_box" lang="bn"><span class="alt-edited hps">সিস্টেমে একটি</span></span> Marionette সেশন চলছে।</p> - -<p><a class="external" href="http://4.bp.blogspot.com/-wdjTWI_UrH0/Tys1t-VWTMI/AAAAAAAAANM/Hb3pLdPOoMc/s640/Starting+Marionette+Session+Interactively.tiff"><img alt="" class="default" src="http://4.bp.blogspot.com/-wdjTWI_UrH0/Tys1t-VWTMI/AAAAAAAAANM/Hb3pLdPOoMc/s640/Starting+Marionette+Session+Interactively.tiff"></a></p> - -<p><span id="result_box" lang="bn"><span class="hps">কমান্ড</span></span> "<code>marionette.execute_script()</code>" <span id="result_box" lang="bn"><span class="hps">জাভাস্ক্রিপ্ট</span> <span class="hps">কমান্ড</span> <span class="hps">এম্বেড করতে পারে</span></span>, যা তারপর <span class="short_text" id="result_box" lang="bn"><span class="hps">B2G</span> <span class="hps">এর</span> <span class="hps">Gecko</span> <span class="hps">প্ল্যাটফর্মে</span> <span class="alt-edited hps">চালানো সম্ভব</span></span>। <span id="result_box" lang="bn"><span class="alt-edited hps">এটি</span> <span class="hps">ব্যবহার করে</span></span>, <span id="result_box" lang="bn"><span class="hps">আপনি</span> কোন <span class="hps">DOM</span> <span class="alt-edited hps">এলিমেন্ট</span> <span class="hps">এইচটিএমএল</span> <span class="hps">এলিমেন্ট</span> <span class="alt-edited hps">অবজেক্ট এবং</span> <span class="hps">উপলব্ধ</span> <span class="hps">বৈশিষ্ট্য</span> <span class="hps">ও</span> <span class="hps">পদ্ধতি</span> <span class="alt-edited hps">রিটার্ন</span> করে <span class="hps">দেখতে পারেন</span></span>:</p> - -<p><span style="font-family: courier new,courier,monospace;">>>> marionette.execute_script("return navigator.battery;")<br> - {u'onlevelchange': None, u'level': 0.91, u'dischargingTime': None, u'onchargingchange': None, u'ondischargingtimechange': None, u'onchargingtimechange': None, u'chargingTime': None, u'charging': True}<br> - >>> marionette.execute_script("return navigator.battery.level;")<br> - 0.91<br> - >>> marionette.execute_script("return navigator.geolocation;")<br> - {}<br> - >>> marionette.execute_script("return navigator.mozSms;")<br> - {u'onreceived': None, u'ondelivered': None, u'onsent': None}</span></p> - -<p><a class="external" href="http://2.bp.blogspot.com/-WaSbVYa85K0/Tys2-IJC3ZI/AAAAAAAAANU/s7wvpanwmNY/s640/Getting+DOMHTMLelements.tiff"><img alt="" class="default" src="http://2.bp.blogspot.com/-WaSbVYa85K0/Tys2-IJC3ZI/AAAAAAAAANU/s7wvpanwmNY/s640/Getting+DOMHTMLelements.tiff"></a></p> - -<p>আপনি এই <span id="result_box" lang="bn"><span class="hps">টেকনিক</span> <span class="hps">ব্যবহার করে</span></span> DOM ট্রি ট্রাভার্স করতে পারেন কোন <span id="result_box" lang="bn"><span class="alt-edited hps">অবজেক্ট,<span id="result_box" lang="bn"><span class="hps">পদ্ধতি</span><span>, এবং</span> <span class="hps">গুণাবলী</span> <span class="hps">পাওয়া যায় তা <span id="result_box" lang="bn"><span class="hps">মূল্যায়নের জন্য</span></span></span></span></span></span>।</p> - -<h2 id="ইন্টারেক্টিভ_পদ্ধতিতে_বেসিক_টেলিফোনি_টেস্টিং"><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">ইন্টারেক্টিভ পদ্ধতিতে</span></span> <span class="short_text" id="result_box" lang="bn"><span class="hps">বেসিক</span> <span class="hps">টেলিফোনি</span> <span class="short_text" id="result_box" lang="bn"><span class="hps">টেস্টিং</span></span></span></h2> - -<p>আপনি marionette এর <span id="result_box" lang="bn"><span class="hps">সঙ্গে</span> <span class="alt-edited hps">ইন্টারেক্টিভ পদ্ধতিতে</span> <span class="hps">মৌলিক</span> <span class="hps">টেলিফোনি</span> <span class="hps">পরীক্ষা করতে পারবেন</span></span>। <span id="result_box" lang="bn"><span class="hps">নিম্নলিখিত উদাহরণে</span> <span class="hps">দুটি</span> সচল ফোনের প্রয়োজন, প্রতিটির সিমকার্ডসহ।</span>একটি আপনার Galaxy SII, যেটিতে B2G চলমান।</p> - -<p><span id="result_box" lang="bn"><span class="hps">একটি ইন্টারেক্টিভ</span> <span class="alt-edited hps">Marionette</span> <span class="alt-edited hps">সেশন</span> <span class="hps">শুরু করুন এবং</span> <span class="hps">পোর্ট</span> <span class="hps">ফরওয়ার্ড করুন</span></span>:</p> - -<p><code>$ adb forward tcp:2828 tcp:2828<br> - $ python<br> - >>> from marionette import Marionette<br> - >>> marionette = Marionette('localhost', 2828)<br> - >>> marionette.start_session()<br> - u'5-b2g</code></p> - -<p>এখন, আপনার marionette এর <span class="short_text" id="result_box" lang="bn"><span class="hps">সাথে</span> <span class="hps">দুটি</span> <span class="hps">সম্ভাব্য</span> <span class="alt-edited hps">উপায়</span> <span class="hps">আছে</span></span>। <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">একটি</span> <span class="hps">একটু বেশি পাইথনিক</span></span>:</p> - -<p><code>>>> marionette.set_context("chrome")<br> - True<br> - >>> marionette.execute_script("return navigator.mozTelephony;")<br> - >>> num =<br> - >>> marionette.execute_script("return navigator.mozTelephony.dial('%d');" % num)</code></p> - -<p><span id="result_box" lang="bn"><span class="hps">অন্যথায়</span></span>, <span id="result_box" lang="bn"><span class="hps">এই</span> <span class="alt-edited hps">পদ্ধতি</span></span>, যা JS এর উপর বেশি <span id="result_box" lang="bn"><span class="hps">নির্ভর করে </span></span>( <code>marionette.execute_script()</code> <span id="result_box" lang="bn"><span class="hps">মধ্যে</span> <span class="hps">এমবেডেড</span></span>) <span id="result_box" lang="bn"><span class="alt-edited hps">JS</span> <span class="alt-edited hps">নাম্বার</span> <span class="alt-edited hps">ভেরিয়েবলের</span> <span class="hps">চারপাশে</span> <span class="alt-edited hps">উদ্ধৃতি চিহ্ন</span> <span class="hps">লক্ষ্য করুন</span></span>:</p> - -<p><code>>>> marionette.set_context("chrome")<br> - True<br> - >>> marionette.execute_script("""<br> - ... var num = ""<br> - ... return navigator.mozTelephony.dial(num);<br> - ... """)<br> - {} </code></p> - -<p><span class="short_text" id="result_box" lang="bn"><span class="hps">আমরা প্রথম</span> <span class="alt-edited hps">পদ্ধতি</span> <span class="hps">চেষ্টা করব</span></span>:</p> - -<p><a class="external" href="http://3.bp.blogspot.com/-cAsP3Beif4g/Tyxr92r6baI/AAAAAAAAANk/GiMlZsXfFYc/s640/Marionette_interactive_telephony.tiff"><img alt="" class="default" src="http://3.bp.blogspot.com/-cAsP3Beif4g/Tyxr92r6baI/AAAAAAAAANk/GiMlZsXfFYc/s640/Marionette_interactive_telephony.tiff"></a></p> - -<p><span id="result_box" lang="bn"><span class="hps">এটি একটি</span> <span class="hps">ফোন কল চালু করে</span></span>, যার <span id="result_box" lang="bn"><span class="alt-edited hps">আউটপুট</span></span> <code>$adb logcat</code> এ <span id="result_box" lang="bn"><span class="hps">মনিটর করা</span> <span class="hps">যাবে।</span></span></p> - -<p><a class="external" href="http://4.bp.blogspot.com/-Np12ZkqpRfM/Tyxs3zAf0EI/AAAAAAAAANs/xhr58eU_s00/s640/ADB+LOGCAT+interactive+telephony.tiff"><img alt="" class="default" src="http://4.bp.blogspot.com/-Np12ZkqpRfM/Tyxs3zAf0EI/AAAAAAAAANs/xhr58eU_s00/s640/ADB+LOGCAT+interactive+telephony.tiff"></a></p> diff --git a/files/bn/archive/b2g_os/automated_testing/reftests/index.html b/files/bn/archive/b2g_os/automated_testing/reftests/index.html deleted file mode 100644 index 63eddc3d0d..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/reftests/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Firefox OS reftests -slug: Archive/B2G_OS/Automated_testing/Reftests -translation_of: Archive/B2G_OS/Automated_testing/Reftests ---- -<div class="summary"> - <h5 id="Reference_tests_(or_reftests)_are_basically_tests_that_compare_two_separate_renderings_of_web_app_UI_features_(HTML_elements_for_example)_to_see_if_they_are_the_same_or_not._This_article_provides_you_with_all_ুই্জকগাইইআlves_read_Creating_reftest-based_unit_tests."><span class="seoSummary"> Reference tests (or reftests) are basically tests that compare two separate renderings of web app UI features (HTML elements, for example) to see if they are the same, or not. This article provides you with all ুই্জকগাইইআlves, read <a href="/en-US/docs/Creating_reftest-based_unit_tests">Creating reftest-based unit tests</a>.</span></h5> -</div> -<h2 id="Prerequisites_for_running_reftests">Prerequisites for running reftests</h2> -<p>You can run <a href="/en-US/docs/Creating_reftest-based_unit_tests" title="/en-US/docs/Creating_reftest-based_unit_tests">reftests</a> on B2G. These are mainly tested on the emulator, but should in theory run on devices as well. In this article <code>$B2G_HOME</code> refers to the cloned B2G repository. Below are the things you need to build or set up before you can try running B2G reftests.</p> -<h3 id="Build_B2G_for_the_target_you're_testing">Build B2G for the target you're testing</h3> -<p><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">Regular B2G build instructions apply</a> — no need for any special build options.</p> -<p>The B2G config that you will be using (what you pass to <code>./config.sh</code>) will probably be <code>emulator</code> as that is what reftests are typically run on. Before building B2G for the <code>emulator</code> config, pay special attention to the <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Emulator_build_issues" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Emulator_build_issues">Emulator build issues</a> section in the <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Firefox OS build prerequisites</a> page.</p> -<p>As usual, make sure <code>adb</code> is in your path and that it successfully connects to your running emulator or device. Try <code>adb devices</code> to make sure it is working ok.</p> -<h2 id="Running_reftests">Running reftests</h2> -<p>Having satisfied the above prerequisites, you can then run reftests using one of the following sets of terminal commands.</p> -<h3 id="For_the_emulator">For the emulator</h3> -<p>Use mach:</p> -<pre>cd $B2G_HOME -./mach reftest-remote</pre> -<p>This will run all reftests. If you want to run a specific reftest, do the following:</p> -<pre>cd $B2G_HOME -./mach reftest-remote relative/path/from/B2G/to/reftest.list</pre> -<h3 id="For_a_real_device"><strong>For a real device</strong></h3> -<p>Running reftests on a device is not officially supported yet. One problem is that most devices don't support the minimum required resolution (800x1000) for many of the tests. But if you want to try anyway, you should be able to do so using the following steps:</p> -<pre class="brush: bash">cd $B2G_HOME/objdir-gecko -make package-tests -source _virtualenv/bin/activate -cd dist/test-package-stage/reftest -python runreftestb2g.py --b2gpath $B2G_HOME --xre-path /path/to/dir/containing/desktop/xpcshell --ignore-window-size <code>relative/path/from/B2G/objdir-gecko/to/reftest.list</code></pre> -<h2 id="Running_crashtests">Running crashtests</h2> -<p>To run crashtests, do the following:</p> -<pre>cd $B2G_HOME -./mach crashtest-remote</pre> -<p>This will run all crashtests. If you want to run a specific crashtest, do the following:</p> -<pre>cd $B2G_HOME -./mach reftest-remote relative/path/from/B2G/to/crashtests.list</pre> -<h2 id="Running_jsreftests">Running jsreftests</h2> -<p>JSReftests are not officially supported yet. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=972870">bug 972870</a> for progress updates on adding jsreftests to mach.</p> -<h2 id="Running_reftest_with_non-default_options">Running reftest with non-default options</h2> -<p>You can optionally add <code>--total-chunks</code> and <code>--this-chunks</code> arguments as you would with regular desktop reftests. Use:</p> -<pre class="brush: bash">mach help reftest-remote</pre> -<p>for a full list of supported arguments.</p> -<h2 id="Running_reftest_with_a_downloaded_emulator">Running reftest with a downloaded emulator</h2> -<p>If you've built B2G for another config (like otoro) and want to run the tests on an emulator, you can do so without building an emulator yourself. Just download the latest trunk arm emulator and do the following:</p> -<pre class="brush: bash">pip install marionette-client -python runreftestb2g.py --emulator arm --b2gpath path/to/emulator --xre-path /path/to/dir/containing/desktop/xpcshell --ignore-window-size <code>--emulator-res 800x1000 <path_to_reftest_manifest></code></pre> -<h2 id="Running_reftest_with_a_downloaded_emulator_and_downloaded_tests.zip_package">Running reftest with a downloaded emulator and downloaded tests.zip package</h2> -<p>If you want to run reftests against a downloaded emulator and a downloaded <code>tests.zip</code> package, you should extract them both.</p> -<p>Then run the following commands:</p> -<pre class="brush: bash">cd $TESTS_ZIP_DIR/mozbase -python setup_development.py -cd $TESTS_ZIP_DIR/marionette -python setup.py develop -cd $TESTS_ZIP_DIR/reftest -python runreftestb2g.py --emulator arm --b2gpath $EMULATOR_DIR --xre-path /path/to/dir/containing/desktop/xpcshell --ignore-window-size --emulator-res 800x1000 <path_to_reftest_manifest></pre> -<div class="note"> - <p><strong>Note</strong>: For best results, you should perform the above steps using a <a href="/en-US/docs/Python/Virtualenv" title="/en-US/docs/Python/Virtualenv">Python virtualenv</a>.</p> -</div> -<h2 id="Troubleshooting">Troubleshooting</h2> -<p>The following sections provide some answers to common problems encountered when trying to use reftests.</p> -<h3 id="I_can't_build_the_emulator!">I can't build the emulator!</h3> -<p>If you have trouble building B2G in the <code>emulator</code> config, check out the <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Emulator_build_issues" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Emulator_build_issues">Emulator build issues</a> section in the <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Firefox OS build prerequisites</a> page.</p> -<h3 id="Check_that_your_B2G_buildemulator_works_and_that_ADB_can_connect_to_it">Check that your B2G build/emulator works and that ADB can connect to it</h3> -<p>First check that your B2G build runs normally. If this is an emulator build, then <code>./run-emulator.sh</code> should work: it should start up the emulator and boot B2G inside it. If it doesn't, get the log from <code>adb logcat</code> and ask for help. If ADB fails to connect to the running emulator, make sure that you have no other (Android or B2G) devices connected, and try passing in the <code>-e</code> option to tell adb to focus on the emulator:</p> -<pre class="brush: bash">adb logcat -e</pre> -<p>Once you have verified that your B2G build/emulator works normally and that ADB can connect to it, the next step is to verify that your xpcshell desktop executable runs normally. If you built B2G for a real device and ADB can't connect to it, check out <a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop">Connecting a Firefox OS device to the desktop</a>.</p> -<div class="note"> - <p><strong>Note</strong>: None of the errors below should occur if you are using mach. If you have problems with mach, please file a bug under Testing/Reftest and CC :ahal</p> -</div> -<h3 id="Check_that_you_can_run_your_desktop_xpcshell_executable">Check that you can run your desktop xpcshell executable</h3> -<p>The <code>python runreftestb2g.py</code> command line above will try to run xpcshell on your desktop with the path specified by the <code>--xre-path</code> argument. Check that running xpcshell from the current directory with this relative path actually works.</p> -<p>For example, suppose that your command line contains:</p> -<pre class="brush: bash">--xre-path /hack/mozilla-central/objdir/dist/bin</pre> -<p>Try running this from the same directory as you want to run <code>python runreftestb2g.py</code> from<code>:</code></p> -<pre><code class="brush: bash">$ /hack/mozilla-central/objdir/dist/bin/xpcshell</code></pre> -<p>This should land you in a special-looking shell like this:</p> -<pre class="brush: bash">js></pre> -<p>If this fails with an error message complaining about being unable to find or load certain shared libraries, like this</p> -<pre class="brush: bash">/hack/mozilla-central/objdir/dist/bin/xpcshell: error while loading shared libraries: libxul.so: cannot open shared object file: No such file or directory</pre> -<p>then you need to set the right environment variable so that it looks for these libraries in the same directory. On Linux, you would set <code>LD_LIBRARY_PATH</code> to the same directory as you want to pass as <code>--xre-path</code>. For example, this should work:</p> -<pre class="brush: bash">LD_LIBRARY_PATH=<code>/hack/mozilla-central/objdir/dist/bin <code>/hack/mozilla-central/objdir/dist/bin/xpcshell</code></code></pre> -<p>On Mac OSX, the environment variable to set is <code>DYLD_LIBRARY_PATH</code>.</p> -<h3 id="Check_that_reftest_can_find_httpd.js">Check that reftest can find httpd.js</h3> -<p>If reftest still fails to run — returning early with an error — the next most likely cause of trouble is it failing to find certain files that it needs to load. The first file that it could fail to find is <code>httpd.js</code>. Typically, the reason why it would not find it is that you accidentally built xpcshell with <code>--disable-tests</code>. So, make sure that the path you pass to <code>--xre-path</code> does contain a <code>httpd.js</code> file under the <code>components</code> subdirectory.</p> -<p>This is good:</p> -<pre class="brush: bash">$ find /hack/mozilla-central/objdir/dist/bin/ -name httpd.js -/hack/mozilla-central/objdir/dist/bin/components/httpd.js -/hack/mozilla-central/objdir/dist/bin/modules/commonjs/sdk/test/httpd.js</pre> -<p>This is bad (was caused by <code>--disable-tests</code>):</p> -<pre class="brush: bash">$ find /hack/mozilla-central/objdir/dist/bin/ -name httpd.js -/hack/mozilla-central/objdir/dist/bin/modules/commonjs/sdk/test/httpd.js</pre> -<h3 id="Check_that_you_didn't_forget_to_make_package-tests">Check that you didn't forget to make package-tests</h3> -<p>Forgetting the <code>make package-tests</code> step described above would certainly explain why nothing works.</p> -<h3 id="Check_that_you_passed_a_correct_relative_path_to_the_reftest.list">Check that you passed a correct relative path to the reftest.list</h3> -<p>The final argumant in the command line running reftest is the <code>relative/path/from/B2G/objdir-gecko/to/reftest.list</code>. This must be a relative path from the <code>B2G/objdir-gecko</code> directory to a <code>reftest.list</code> file under it. So check that a <code>reftest.list </code>file is actually present there! If it isn't, compare your command line to the sample command line below, and/or check that you didn't forget to make <code>package-tests</code> as explained above.</p> -<p>Sample command line:</p> -<pre class="brush: bash">$ LD_LIBRARY_PATH=/hack/mozilla-central/objdir/dist/bin python runreftestb2g.py --b2gpath /hack/b2g/B2G/ --xre-path /hack/mozilla-central/objdir/dist/bin --ignore-window-size --emulator arm --emulator-res 800x1000 tests/layout/reftests/css-gradients/reftest.list</pre> -<p>Here, we are running only the <code>css-gradients</code> directory of reftests.</p> diff --git a/files/bn/archive/b2g_os/automated_testing/setting_up_marionette/index.html b/files/bn/archive/b2g_os/automated_testing/setting_up_marionette/index.html deleted file mode 100644 index 4d678a3cd9..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/setting_up_marionette/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: ফায়ারফক্স ওএস এর জন্য Marionette সেট আপ -slug: Archive/B2G_OS/Automated_testing/Setting_up_Marionette -tags: - - Guide - - গাইড - - ফায়ারফক্স ওএস -translation_of: 'https://marionette-client.readthedocs.io/en/latest/' ---- -<h2 id="Marionette_ক্লায়েন্ট_সেট_আপ">Marionette <span class="short_text" id="result_box" lang="bn"><span class="hps">ক্লায়েন্ট</span> <span class="alt-edited hps">সেট আপ</span></span></h2> - -<p>The Marionette <span id="result_box" lang="bn"><span class="hps">ক্লায়েন্ট</span></span> <span id="result_box" lang="bn"><span class="hps">একটি</span> <span class="hps">পাইথন</span> <span class="hps">প্যাকেজ</span></span> <span id="result_box" lang="bn"><span class="hps">যা দিয়ে</span></span> <span id="result_box" lang="bn"><span class="alt-edited hps">আপনি</span> <span class="alt-edited hps">Marionette</span> <span class="hps">টেস্ট</span> <span class="hps">চালাতে পারেন</span></span>: <span id="result_box" lang="bn"><span class="hps">পাইথন</span> <span class="hps">পরীক্ষা, এবং</span> <span class="hps">জাভাস্ক্রিপ্ট</span> <span class="hps">WebAPI</span> <span class="alt-edited hps">টেস্ট</span> <span class="hps">উভয়ই</span></span>। <span id="result_box" lang="bn"><span class="hps">আপনি এটা</span> <span class="hps">ব্যবহার করার পূর্বে</span> <span class="hps">আপনার মেশিনে</span> <span class="hps">এই</span> <span class="hps">সেট আপ</span> <span class="hps">করতে হবে।</span></span></p> - -<p><span class="short_text" id="result_box" lang="bn"><span class="hps">এটা করার জন্য,</span> <span class="hps">আপনার একটি</span> <span class="hps">Gecko</span> <span class="alt-edited hps">ট্রি</span> <span class="alt-edited hps">ক্লোন করা</span> <span class="hps">উচিত</span></span>; <span id="result_box" lang="bn"><span class="hps">হয়</span></span> Gecko <span id="result_box" lang="bn"><span class="alt-edited hps">ট্রি <span id="result_box" lang="bn"><span class="hps">ফায়ারফক্স</span> <span class="hps">ওএস এর ভিতরে <span id="result_box" lang="bn"><span class="alt-edited hps">ক্লোন</span></span></span></span></span></span>, অথবা <span id="result_box" lang="bn"><span>একটি</span> <span class="alt-edited hps">স্ট্যান্ডঅ্যালোন</span> <span class="hps">Gecko</span> <span class="alt-edited hps">ক্লোন </span></span>(e.g., <a href="http://hg.mozilla.org/mozilla-central/" title="http://hg.mozilla.org/mozilla-central/">mozilla-central</a>) কাজ করবে। <span id="result_box" lang="bn"><span class="hps">উদাহরণস্বরূপ, <span id="result_box" lang="bn"><span class="alt-edited hps">মনে করুন প্রথমবারের মত আপনি <span id="result_box" lang="bn"><span class="hps">Gecko</span> <span class="alt-edited hps">ট্রি</span> <span class="alt-edited hps">ক্লোন করছেন</span></span></span></span></span></span>:</p> - -<p><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">প্রথমে</span> </span>Mercurial <span class="short_text" id="result_box" lang="bn"><span class="hps">ইনস্টল করুন</span></span>, যদি <span class="short_text" id="result_box" lang="bn"><span class="hps">এটা</span> <span class="hps">এখনো</span> <span class="hps">ইনস্টল</span> <span class="hps">না হয়ে থাকে</span></span>। আপনার যদি Homebrew <span id="result_box" lang="bn"><span class="hps">ইনস্টল করা থাকে, তাহলে আপনি ম্যাকে এভাবে করতে পারেন।</span></span><span class="short_text" id="result_box" lang="bn"><span class="hps">অন্যান্য</span> <span class="hps">প্যাকেজ</span> <span class="hps">ম্যানেজার</span> <span class="hps">পৃথক হবে</span></span>:</p> - -<p><code>$ brew install mercurial</code></p> - -<p><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">আপনার কাজের</span> <span class="alt-edited hps">ডিরেক্টরি</span> <span class="hps">পরিবর্তন করুন</span></span> (e.g. ~/code) <span class="short_text" id="result_box" lang="bn"><span class="hps">এবং</span> <span class="hps">ক্লোনিং</span> <span class="alt-edited hps">প্রক্রিয়া</span> <span class="alt-edited hps">শুরু করতে</span> <span class="alt-edited hps">এটি</span> <span class="alt-edited hps">লিখুন</span></span>:</p> - -<p><code>$ hg clone http://hg.mozilla.org/mozilla-central/ $GECKO_DIR</code></p> - -<p>... <span class="short_text" id="result_box" lang="bn"><span class="hps">যেখানে</span></span> $GECKO_DIR <span class="short_text" id="result_box" lang="bn"><span class="hps">কোনো</span> <span class="alt-edited hps">সঠিক</span> <span class="hps">ডিরেক্টরি</span> <span class="hps">নাম</span> <span class="hps">হতে পারে</span></span>, e.g. <code>mozilla-central</code>. যা কিছু সময় নিতে পারে (<span id="result_box" lang="bn"><span class="hps">প্রায় ১০</span> <span class="hps">মিনিট এর মধ্যে <span id="result_box" lang="bn"><span>একটি দ্রুত</span> <span class="alt-edited hps">সংযোগ সহ</span></span></span></span>).</p> - -<p><span id="result_box" lang="bn"><span class="hps">একটি</span> <span class="hps">ফায়ারফক্স</span> <span class="hps">ওএস</span> <span class="hps">বিল্ড</span> <span class="alt-edited hps">এনভায়রনমেন্ট</span> <span class="hps">সেট আপ কিভাবে করা যায় <span id="result_box" lang="bn"><span class="hps">বিস্তারিত জানতে</span></span> </span></span><a href="/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">Building and installing Firefox OS</a> দেখুন এবং কোডটি লিখুন।</p> - -<pre>$ cd $GECKO_DIR/testing/marionette/client - -$ python setup.py develop</pre> - -<p><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">আপনার</span> <span class="hps">একটি</span></span> <a href="/en-US/docs/Python/Virtualenv" title="/en-US/docs/Python/Virtualenv">virtualenv</a> <span class="short_text" id="result_box" lang="bn"><span class="hps">ব্যবহার</span> <span class="hps">করা আবশ্যক</span></span>। <span class="short_text" id="result_box" lang="bn"><span class="hps">দ্রুত</span></span> virtualenv সেট<span class="short_text" id="result_box" lang="bn"><span class="hps">আপ</span></span>:</p> - -<p><code>$ pip install virtualenv</code></p> - -<p><code>$ virtualenv $MARIONETTE_ENV</code></p> - -<p>আবার, <code>$MARIONETTE_ENV</code> <span class="short_text" id="result_box" lang="bn"><span class="hps">কোনো</span> <span class="alt-edited hps">সঠিক</span> <span class="hps">ডিরেক্টরি</span> <span class="hps">নাম</span> <span class="hps">হতে পারে</span></span>। <span id="result_box" lang="bn"><span class="alt-edited hps">এখন আপনার <span id="result_box" lang="bn"><span class="hps">উপরোক্ত <span id="result_box" lang="bn"><span class="alt-edited hps">ধাপগুলি</span> <span class="hps">চালাতে</span> <span class="hps">সক্ষম হওয়া উচিত <span id="result_box" lang="bn"><span class="hps">কিন্তু নতুন</span> <span class="hps">ভার্চুয়াল</span> <span class="hps">পরিবেশে</span></span></span></span></span></span></span></span>:</p> - -<pre>$ cd $GECKO_DIR/testing/marionette/client - -$ $MARIONETTE_ENV/bin/python setup.py develop</pre> - -<p><span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">Marionette</span> <span class="hps">ইনস্টল করা হয়েছে</span> <span class="hps">কিনা <span class="short_text" id="result_box" lang="bn"><span class="alt-edited hps">যাচাই করতে</span></span></span></span>:</p> - -<pre>$ $MARIONETTE_ENV/bin/python ->>> from marionette import Marionette</pre> - -<p><span id="result_box" lang="bn"><span class="alt-edited hps">Marionette</span> <span class="hps">সেট আপ করার পরে</span> <span class="alt-edited hps">টেস্ট</span> <span class="hps">চালানোর</span> <span class="hps">সম্পর্কে আরো তথ্য জানতে </span></span> <a href="/en-US/docs/Marionette/Running_Tests" title="/en-US/docs/Marionette/Running_Tests">Running Marionette tests</a> দেখুন। </p> diff --git a/files/bn/archive/b2g_os/automated_testing/writing_gaia_unit_tests/index.html b/files/bn/archive/b2g_os/automated_testing/writing_gaia_unit_tests/index.html deleted file mode 100644 index a6f6d3a251..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/writing_gaia_unit_tests/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Writing Gaia Unit Tests -slug: Archive/B2G_OS/Automated_testing/Writing_Gaia_Unit_Tests -tags: - - Firefox OS - - Gaia - - Guide - - NeedsReview - - Testing - - unit tests -translation_of: Archive/B2G_OS/Automated_testing/Writing_Gaia_Unit_Tests ---- -<h2 id="লেখার_ইউনিট_পরীক্ষা">লেখার ইউনিট পরীক্ষা</h2> -<p>ইউনিট পরীক্ষার চলমানকারী <a class="external" href="http://visionmedia.github.com/mocha/" title="http://visionmedia.github.com/mocha/">mocha</a> ব্যবহার করে <a class="external" href="http://visionmedia.github.com/mocha/index.html#tdd-interface" title="http://visionmedia.github.com/mocha/index.html#tdd-interface">TDD interface</a> । মোচা মালিকানা অধিকারের দাবি করে না (কোনো <code>ok</code> orঅথবা <code>assert_equals নেই</code>),সুতরাং আমরা <a class="external" href="http://chaijs.com/api/assert/" title="http://chaijs.com/code/assert.html">chai</a> ব্যবহার করি অধিকার দেয়ার জন্য।</p> -<p> এটি বিশেষ ভাবে সুপারিশ করা হয়েছে যে আপনি <a class="external" href="http://visionmedia.github.com/mocha/" title="http://visionmedia.github.com/mocha/">mocha</a> সাইটের মাধ্যমে পড়ুন , যেহেতু সকল পরীক্ষা সত্যিকারভাবে মোচা পরীক্ষা ।আপনাকে শুরু করানোর জন্য এখানে দলিল কে কেন্দ্রবিন্দুতে রাখা হয়েছে,এবং আমাদের বিশেষ সম্পুর্ণতা টেষ্ট এজেন্ট এবং গা য়া তে।</p> -<p> এটা আরো নোট করা গুরুত্বপূর্ণ যে আমরা বিশেষ ফাংশন যোগ করি ( যেমন <code>require()</code> এবং <code>requireApp()</code>) লেখার পরীক্ষাকে সহজতর বানাতে।সকল পরীক্ষা সাহায্যকারী স্ক্রীপ্ট গুলো <code><a class="link-https" href="https://github.com/mozilla-b2g/gaia/tree/master/dev_apps/test-agent/common/test" title="https://github.com/mozilla-b2g/gaia/tree/master/dev_apps/test-agent/common/test">/common/test</a></code> তে সরাসরি পাওয়া যেতে পারে।</p> -<h2 id="ফাইলের_নাম_করণ"><strong>ফাইলের নাম করণ</strong></h2> -<h4 id="পরীক্ষা_গুলো_সাধারণত_একের_থেকে_এক।_একটি_হাতিয়ার_সরাসরি_js_তে_থাকেএবং_একটি_পরীক্ষা_সরাসরি_test_তে_থাকে।"><strong>পরীক্ষা গুলো সাধারণত</strong> একের থেকে এক। একটি হাতিয়ার সরাসরি <code>js/</code> তে থাকে,এবং একটি পরীক্ষা সরাসরি <code>test/</code> তে থাকে।</h4> -<h3 id="উদাহরণ">উদাহরণ</h3> -<table class="standard-table" style="width: auto;"> - <tbody> - <tr> - <td class="header">হাতিয়ার</td> - <td class="header">পরীক্ষা</td> - </tr> - <tr> - <td>apps/app/js/file.js</td> - <td>apps/app/test/unit/file_test.js</td> - </tr> - <tr> - <td>apps/app/js/nested/thing/file.js</td> - <td>apps/app/test/unit/nested/thing/file_test.js</td> - </tr> - </tbody> -</table> -<h3 id="হাতিয়ারের_উদাহরণ_(gist)"><strong>হাতিয়ারের উদাহরণ (<a class="link-https" href="https://gist.github.com/2703499" title="https://gist.github.com/2703499">gist</a>):</strong></h3> -<pre class="brush: js">//apps/example/js/example.js -var Example = (function(){ - return { - math: function() { - - }, - - complexMethod: function() { - - }, - - asyncMethod: function(callback) { - - } - } -}()); -</pre> -<h3 id="পরীক্ষার_উদাহরণ_(gist)"><strong>পরীক্ষার উদাহরণ (<a class="link-https" href="https://gist.github.com/2703499" title="https://gist.github.com/2703499">gist</a>):</strong></h3> -<pre class="brush: js">//apps/example/test/unit/example_test.js -requireApp('example/js/example.js'); - - -//suite/setup/test/done are standard mocha functionality. - -suite('Example', function() { - var subject; - - //will be called before each "test" block. - setup(function() { - subject = Example(); - }); - - //for a simple method - test('#math', function() { - var result = subject.math('1', '+', '1'); - //assert functionality is provided by chai - assert.equal(result, 2, 'addition should work'); - }); - - //there is full support for async tests using done - //when you set an argument to your test function it is - //assumed that the given test is async and will only - //complete once done is called. - test('#asyncMethod', function(done) { - subject.asyncMethod(function(err, value) { - done(function() { - assert.ok(value, 'sending message failed'); - }); - }); - }); - - //when you have a method that will - //require complex setup/teardown logic - suite('#complexMethod', function() { - var result; - setup(function() { - //complex setup stuff - result = subject.complexMethod(); - }); - - test('stuff works', function() { - assert.typeOf(result, 'string'); - //it is good practice to add the third argument which is - //a description of why a test failed. - assert.equal(result, 'real value', 'should output real value'); - }); - }); - -}); -</pre> diff --git a/files/bn/archive/b2g_os/automated_testing/xpcshell/index.html b/files/bn/archive/b2g_os/automated_testing/xpcshell/index.html deleted file mode 100644 index 65f64b2d4c..0000000000 --- a/files/bn/archive/b2g_os/automated_testing/xpcshell/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: XPCShell -slug: Archive/B2G_OS/Automated_testing/XPCShell -tags: - - B2G - - Firefox OS - - Gaia - - Guide - - XPCOM - - XPCShell - - automated - - tests -translation_of: Archive/B2G_OS/Automated_testing/XPCShell ---- -<div class="summary"> - <p><span class="seoSummary"><a href="/en-US/docs/Writing_xpcshell-based_unit_tests" title="/en-US/docs/Writing_xpcshell-based_unit_tests">XPCShell tests</a> are headless tests of Gecko XPCOM APIs. You can run XPCShell tests on B2G; in this article we will look at how to do so. Currently, these are mainly tested on the emulator, but should in theory run on devices as well. </span></p> -</div> -<div class="note"> - <p><strong>নোটঃএই অনুচ্ছেদে </strong><code>$B2G_HOME</code> সুপারিশ করে থাকে B2G রেস্পেরোটরি ক্লোন করে থাকে ।</p> -</div> -<h2 id="Prerequisites">Prerequisites</h2> -<ul> - <li>You need to build B2G for the target you're testing (see: <a href="/en-US/Firefox_OS/Building_and_installing_Firefox_OS" title="/en-US/Firefox_OS/Building_and_installing_Firefox_OS">Building and installing Firefox OS</a>).</li> - <li>You need to install some Python packages, either in a virtualenv or otherwise: - <pre>cd $GECKO_DIR/testing/mozbase -python setup_development.py -cd $GECKO_DIR/testing/marionette/client -python setup.py develop -</pre> - </li> - <li>Either make sure <code>adb</code> is on your path or specify it with <code>--adbpath</code> (on Linux it is found at <code>$B2G_HOME/out/host/linux-x86/bin/adb</code><em>.</em>)</li> - <li>Have a local copy of <a href="http://busybox.net/downloads/binaries/latest/busybox-armv6l">Busybox</a> (this isn't strictly necessary but greatly reduces the setup time required.)</li> -</ul> -<h2 id="Running_the_tests">Running the tests</h2> -<p>You can then run xpcshell tests using one of the following sets of terminal commands:</p> -<p>If you are using an emulator:</p> -<pre>cd $B2G_HOME/objdir-gecko -make package-tests -cd dist/test-stage/xpcshell -python runtestsb2g.py --b2gpath $B2G_HOME --adbpath $ADB_PATH --emulator arm --use-device-libs --manifest <<a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Writing_xpcshell-based_unit_tests#Adding_your_tests_to_the_xpcshell_manifest">path_to_xpcshell_manifest</a>> --testing-modules-dir <path_to_testing_modules_dir> --busybox <path_to_busybox_binary></pre> -<p>If you are using a real device:</p> -<pre>cd $B2G_HOME/objdir-gecko -make package-tests -cd dist/test-stage/xpcshell -python runtestsb2g.py --b2gpath $B2G_HOME --adbpath $ADB_PATH --use-device-libs --manifest <<a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Writing_xpcshell-based_unit_tests#Adding_your_tests_to_the_xpcshell_manifest">path_to_xpcshell_manifest</a>> --testing-modules-dir <path_to_testing_modules_dir></pre> -<p>You can optionally add <code>--total-chunks</code> and <code>--this-chunks</code> arguments as you would with regular desktop xpcshell tests. Use:</p> -<pre>python runtestsb2g.py --help</pre> -<p>for a full list of supported arguments.</p> -<p><strong>Important:</strong> The manifest path you supply must be under the <code>dist/test-stage/xpcshell</code> directory. Don't use a path to the original source location of the manifest in the tree.</p> -<p>After you invoke <code>runtestsb2g.py</code>, the test runner will launch the emulator for you (if you're running the tests on an emulator) or reboot your device (if you're running the tests on a device), and start running the tests. Because the emulator is slow, and it is necessary to push a test profile to the emulator and restart B2G, the tests can take a few minutes to start. Before they start, you will just see a black or white screen. After they start, you should see the test log being dumped to the console.</p> -<p>When the tests are done, the emulator is shut down for you, or if you're using a device, the device is rebooted.</p> -<h3 id="Installing_busybox_manually">Installing busybox manually</h3> -<p>When running xpcshell tests on devices there is no <code>--busybox</code> option, so setting up the test run can take a very long time. Fortunately you can still install it manually prior to running the tests. For an example of how to do this see <a href="https://github.com/mozilla/Negatus/blob/master/setup-tools.sh" title="https://github.com/mozilla/Negatus/blob/master/setup-tools.sh">https://github.com/mozilla/Negatus/blob/master/setup-tools.sh</a>.</p> -<h2 id="Running_xpcshell_tests_with_a_downloaded_emulator">Running xpcshell tests with a downloaded emulator</h2> -<p>If you've built B2G for another config (like otoro) and want to run the tests on an emulator, you can do so without building an emulator yourself. Just download the latest trunk arm emulator, and use the same instructions as above, replacing the <code>--b2gpath $B2G_HOME</code> argument for <code>runreftestb2g.py</code> with <code>--b2gpath /path/to/unpacked/emulator</code>.</p> |
