উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল

পৃষ্ঠা অবজেক্ট মডেল, সাধারণত হিসাবে পরিচিত খুলুন POM, যে কোনো অটোমেশন ফ্রেমওয়ার্কের একটি জনপ্রিয় প্যাটার্ন। পেজ অবজেক্ট মডেল সাইপ্রাসেও প্রয়োগ করা যেতে পারে। পেজ অবজেক্ট মডেলের টেস্ট অটোমেশনের জন্য একটি কাঠামো তৈরিতে অনেক সুবিধা রয়েছে, যেমন কোড ডুপ্লিকেশন কমানো এবং রক্ষণাবেক্ষণ এবং পাঠযোগ্যতা বৃদ্ধি করা। সাইপ্রাস আমাদের পরীক্ষার স্ক্রিপ্টে পেজ অবজেক্ট মডেল অন্তর্ভুক্ত করার নমনীয়তা প্রদান করে। এই নিবন্ধে, আমরা উদাহরণ সহ ধাপে ধাপে সাইপ্রাসে একটি পৃষ্ঠা অবজেক্ট মডেল তৈরির দিকে নজর দেব।

সাইপ্রেস পেজ অবজেক্ট মডেল
সাইপ্রেস পেজ অবজেক্ট মডেল

সুচিপত্র:

পেজ অবজেক্ট মডেল কি?

পৃষ্ঠা অবজেক্ট মডেল একটি নকশা প্যাটার্ন যেখানে পৃষ্ঠার বস্তুগুলি অটোমেশন পরীক্ষার স্ক্রিপ্ট থেকে আলাদা করা হয়। অটোমেশন টেস্টিং আমাদের অনেক লিভারেজ দেয় যা পরীক্ষায় আমাদের উপকার করে; যাইহোক, কিছু ফলাফল আছে যেমন কোড ডুপ্লিকেশন এবং প্রকল্পটি বাড়ার সাথে সাথে রক্ষণাবেক্ষণের ঝুঁকিতে বৃদ্ধি। আসুন একটি উদাহরণ দিয়ে POM এর তাৎপর্য বুঝতে পারি।

বিবেচনা করুন আমাদের অ্যাপ্লিকেশনে আমাদের একাধিক পৃষ্ঠা রয়েছে যেমন লগইন পৃষ্ঠা, নিবন্ধন পৃষ্ঠা এবং বুক ফ্লাইট পৃষ্ঠা।

  • লগইন পৃষ্ঠায় লগইন কার্যকারিতার সমস্ত ওয়েব উপাদান রয়েছে
  • নিবন্ধন নিবন্ধন প্রক্রিয়ার সমস্ত পদ্ধতি এবং ওয়েব উপাদান রয়েছে
  • বুক ফ্লাইটে ফ্লাইট বুকিং পৃষ্ঠার ওয়েব উপাদান থাকে

TC1, TC2, এবং TC3 নামে তিনটি টেস্ট কেস আছে।

  • TC1 লগইন পরীক্ষার ক্ষেত্রে রয়েছে।
  • TC2 লগইন এবং নিবন্ধন পরীক্ষার ক্ষেত্রে রয়েছে
  • TC3- এ লগইন, রেজিস্ট্রেশন এবং ফ্লাইট বুকিং টেস্ট কেস রয়েছে
উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
POM ছাড়া উদাহরণ

এখন, লগইন পৃষ্ঠা টিসি 1 এর সাথে ইন্টারঅ্যাক্ট করে।

রেজিস্ট্রেশন পৃষ্ঠা টিসি 1 এবং টিসি 2 এর সাথে যোগাযোগ করতে হবে, এবং

ফ্লাইট বুকিং পৃষ্ঠা টিসি 1, টিসি 2 এবং টিসি 3 এর সাথে যোগাযোগ করতে হবে

আপনি দেখতে পাচ্ছেন, তিনটি পরীক্ষার ক্ষেত্রে সাধারণ কার্যকারিতা রয়েছে। সমস্ত টেস্ট কেস ফাইলে লগইন করার পদ্ধতি এবং লোকেটার লেখার পরিবর্তে, আমরা সেগুলি আলাদাভাবে রাখতে পারি এবং ফাইল জুড়ে সেগুলি অ্যাক্সেস করতে পারি। এই ভাবে, কোড পুনরাবৃত্তি করা হয় না, এবং এটি সহজেই পাঠযোগ্য।

কোডিংয়ের অন্যতম সেরা অনুশীলন হল একটি ধারণা শুকনো। এর অর্থ বারবার এক কথা বলোনা। সম্পূর্ণ ফর্মটি স্পষ্টভাবে বলে, আমাদের বার বার কোডের লাইনগুলি পুনরাবৃত্তি করা উচিত নয়। এটি কাটিয়ে উঠতে, পৃষ্ঠা অবজেক্ট মডেল সেরা কোডিং অনুশীলনে গুরুত্বপূর্ণ ভূমিকা পালন করে।

পৃষ্ঠা অবজেক্ট মডেল ফ্রেমওয়ার্ক আর্কিটেকচার

পেজ অবজেক্ট মডেল ফ্রেমওয়ার্ক আর্কিটেকচার একটি প্রমাণিত আর্কিটেকচার যা সহজ পদ্ধতিতে কাস্টমাইজ করতে পারে। আজ, প্রায় সমস্ত কোম্পানি চটপটে পদ্ধতি অনুসরণ করে, যার মধ্যে অবিচ্ছিন্ন ইন্টিগ্রেশন, বিকাশ এবং পরীক্ষা জড়িত। অটোমেশন পরীক্ষকরা পরীক্ষার প্রক্রিয়ার সাথে কাজ করার জন্য পরীক্ষার কাঠামো বজায় রাখে পৃষ্ঠা অবজেক্ট মডেল। অটোমেশন পরীক্ষার কাঠামো বজায় রাখার ক্ষেত্রে এটি একটি উল্লেখযোগ্য নকশা প্যাটার্ন কারণ কোডটি নতুন বৈশিষ্ট্যগুলির সাথে বৃদ্ধি পায়।

পৃষ্ঠা বস্তুটি একটি নকশা প্যাটার্ন যা একটি বস্তু-ভিত্তিক শ্রেণী যা আমরা যে অ্যাপ্লিকেশনটির পরীক্ষা করছি তার সাথে যোগাযোগ করে। পৃষ্ঠা বস্তু গঠিত পৃষ্ঠা শ্রেণী এবং পরীক্ষা ক্ষেত্রেপৃষ্ঠা শ্রেণী ওয়েব উপাদানগুলির সাথে মিথস্ক্রিয়া করার পদ্ধতি এবং লোকেটার নিয়ে গঠিত। আমরা অ্যাপ্লিকেশনের প্রতিটি পৃষ্ঠার জন্য আলাদা ক্লাস তৈরি করি। আমরা প্রতিটি কার্যকারিতার জন্য পৃথক পদ্ধতি তৈরি করব এবং আমাদের স্পেক ফাইলে সেগুলি অ্যাক্সেস করব।

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
পৃষ্ঠা অবজেক্ট মডেল

সাইপ্রাসে পেজ অবজেক্ট মডেল ব্যবহারের সুবিধা

  1. পদ্ধতিগুলো হলো পুনর্ব্যবহারযোগ্য পুরো প্রকল্প জুড়ে এবং যখন প্রকল্পটি বড় হয় তখন বজায় রাখা সহজ। কোডের লাইন হয়ে যায় কম সুপাঠ্য এবং অপ্টিমাইজ করা।
  2. পৃষ্ঠা অবজেক্ট প্যাটার্ন প্রস্তাব করে যে আমরা অপারেশন এবং প্রবাহ যেটা থেকে আমরা UI তে পারফর্ম করছি প্রতিপাদন পদক্ষেপ যখন আমরা POM প্যাটার্ন অনুসরণ করি, তখন আমাদের লেখার প্রবণতা থাকে পরিষ্কার এবং সহজেই বোধগম্য কোড.
  3. পেজ অবজেক্ট মডেলের সাথে, বস্তু এবং পরীক্ষার ক্ষেত্রে একে অপরের থেকে স্বাধীন। আমরা প্রজেক্ট জুড়ে যে কোন জায়গায় বস্তুকে কল করতে পারি। এইভাবে, যদি আমরা বিভিন্ন সরঞ্জাম যেমন TestNG/JUnit ব্যবহার করে থাকি কার্যকরী পরীক্ষার জন্য বা শসা গ্রহণযোগ্যতা পরীক্ষার জন্য, তাহলে এটি সহজেই প্রবেশযোগ্য.

উদাহরণ সহ ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল সাইপ্রেস

এই বিভাগটি বুঝতে পারবে কিভাবে সাইপ্রাসে একটি পেজ অবজেক্ট মডেল তৈরি করতে হয় রিয়েল-টাইম উদাহরণ দিয়ে যা আমরা প্রকল্পে বাস্তবায়ন করতে পারি। আমরা একটি পৃষ্ঠা অবজেক্ট মডেল তৈরির জন্য প্রাথমিক সেটআপ এবং ধাপে ধাপে প্রক্রিয়া থেকে বুঝতে পারব।

আসুন সেই দৃশ্যে আলোচনা করি যার উপর আমরা এই উদাহরণে ফাংশনগুলি লিখব।

  1. নেভিগেট করুন https://admin-demo.nopcommerce.com/ ওয়েবসাইট
  2. বৈধ ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন
  3. লগইন বাটনে ক্লিক করুন
  4. ইউআরএল এর সাথে যুক্ত কিনা তা যাচাই করুন /admin লগইন করার পর

আমরা দুটি ফাইল তৈরি করব - একটি PageObject ফাইল এবং একটি উদাহরণ ফাইল এই উদাহরণের জন্য। চলো আমরা শুরু করি!

ধাপ 1: ভিএস কোডে আমাদের প্রকল্প খুলুন। নামে একটি ফোল্ডার তৈরি করুন PageObject অধীনে ইন্টিগ্রেশন ফোল্ডার এই ফোল্ডারের অধীনে, আপনি যে কোনও মডিউলের জন্য পৃষ্ঠা অবজেক্ট ফাইল তৈরি করতে পারেন।

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
PageObject নামে নতুন ফোল্ডার

ধাপ 2: নামে একটি ফাইল তৈরি করুন LoginPage.js অধীনে PageObject ফোল্ডার LoginPage.js এ, আমরা লগইন কার্যকারিতা জড়িত পদ্ধতিগুলি লিখব।

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
PageObject ফোল্ডারের অধীনে LoginPage.js সৃষ্টি

ধাপ 3: আসুন আমাদের প্রথম পরীক্ষা পদ্ধতি লিখতে শুরু করি LoginPage.js ফাইল আমাদের প্রথমে একটি ক্লাস তৈরি করতে হবে যা আমরা আমাদের স্পেক ফাইলে রপ্তানি করব। আমরা আমাদের ক্লাসকে ডাকব লগইন পৃষ্ঠায়

class LoginPage {

}

আমাদের সিউডোকোডের উপর ভিত্তি করে, আমাদের প্রথম পদক্ষেপ হল URL- এ নেভিগেট করা। আমরা আমাদের পদ্ধতি হিসাবে কল করব navigate()। আমাদের নেভিগেট পদ্ধতির ভিতরে, আমরা যোগ করব cy.visit() সাইপ্রাস থেকে ফাংশন।

 navigate() {
        cy.visit('https://admin-demo.nopcommerce.com/')
    }

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
নেভিগেট পদ্ধতি

ধাপ 4: এখন, আমাদের আমাদের ইমেল ক্ষেত্রে ব্যবহারকারীর নাম লিখতে হবে। আমরা আমাদের পদ্ধতির নাম দেব ইমেইল প্রদান করুন()। প্রথমত, আমাদের ইমেল ক্ষেত্রের লোকেটার পাওয়া উচিত এবং তাদের মাধ্যমে অ্যাক্সেস করা উচিত cy.get() কমান্ড তারপর আমরা ব্যবহার করে ক্ষেত্র পরিষ্কার করব clear() কমান্ড এবং ব্যবহার করে ব্যবহারকারীর নাম যোগ করুন type() কমান্ড আমাদের পদ্ধতিতে, আমরা একটি প্যারামিটার পাস করি ব্যবহারকারীর নাম স্পেক ফাইলে মান পাস করতে। এইভাবে, আমরা যদি এই পদ্ধতিটি অ্যাক্সেস করতে জেনেরিক রাখি যদি একটি ভিন্ন ইমেল আইডি প্রয়োজন হয়।

enterEmail(username) {
        cy.get('[id=Email]').clear()
        cy.get('[id=Email]').type(username);
        return this
    }

এর পরিবর্তে cy.get() উপরের কোডে দুবার কমান্ড করুন, আমরা কেবল তাদের সাথে লুপ করতে পারি ডট অপারেটর।

  enterEmail(username) {
        cy.get('[id=Email]')
            .clear()
            .type(username);
        return this
    }

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
enterEmail পদ্ধতি

আপনি হয়তো লক্ষ্য করেছেন return this লাইন 9 এ। এই ইঙ্গিত দেয় যে ইমেইল প্রদান করুন পদ্ধতি বিশেষের অন্তর্গত লগইন পৃষ্ঠায় শ্রেণী মূলত, এই শ্রেণীর প্রতিনিধিত্ব করে।

ধাপ 5: আমাদের enterEmail পদ্ধতির অনুরূপ পাসওয়ার্ডের জন্য একটি পদ্ধতি তৈরি করতে হবে। আমরা আমাদের পাসওয়ার্ড পদ্ধতি হিসাবে কল করব enterPassword()। প্রাথমিকভাবে, আমরা পাসওয়ার্ডের জন্য লোকেটার পাব, ক্ষেত্রটি সাফ করব এবং ইনপুট মান লিখব। আমরা আমাদের পদ্ধতিতে একটি পরামিতি পাস করব যাকে বলা হয় pswd এবং প্রবেশাধিকার type() কমান্ড।

enterPassword(pswd) {
    cy.get('[id=Password]')
        .clear()
        .type(pswd)
    return this
}
উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
enterPassword পদ্ধতি

ধাপ 6: আমাদের শেষ পদ্ধতি হবে লগইন বাটনে ক্লিক করা। আমরা আমাদের পদ্ধতির নাম দেব submit()। আমরা লোকেটার পাব এবং বোতামটি ক্লিক করে click() সাইপ্রাস থেকে পদ্ধতি।

 submit() {
        cy.get('[type=submit]').click()
    }

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
জমা দেওয়ার পদ্ধতি

ধাপ 7: এখন, আমাদের স্পেস ফাইল জুড়ে এই ক্লাসটি ব্যবহার করতে আমাদের রপ্তানি করতে হবে। এর জন্য, আমরা আমাদের ক্লাসের বাইরে শুধু একটি লাইন যোগ করি, এবং আমরা সহজেই আমাদের স্পেক ফাইলে এটি অ্যাক্সেস করতে পারি।

export default LoginPage

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
এক্সপোর্ট কমান্ড

হুররে! আমরা আমাদের প্রকল্পের জন্য একটি পৃষ্ঠা অবজেক্ট ফাইল তৈরি করেছি। এটা বেশ সহজ এবং সহজ ছিল!

স্পেক ফাইলে পেজ অবজেক্ট অ্যাক্সেস করা

এখন আমাদের টেস্ট কেস ফাইলে যাওয়া যাক। আমাদের ইন্টিগ্রেশন ফোল্ডারে একটি স্পেক ফাইল তৈরি করতে হবে। আমরা আমাদের স্পেক ফাইল কল করব POMDemo.spec.js.

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
POMDemo.spec.js ফাইল তৈরি

ধাপ 1: LoginPage.js ফাইলে আমাদের পদ্ধতিগুলি অ্যাক্সেস করতে, আমাদের অবশ্যই আমদানি সেগুলো আমাদের স্পেক ফাইলে। আমরা আমদানি বিবৃতি ব্যবহার করে আমদানি করি। আমাদের ব্যবহার করে LoginPage.js ফাইলে নেভিগেট করা উচিত ../

আমাদের ক্ষেত্রে, পথ হল ../integration/PageObject/LoginPage। সুতরাং, আমদানি বিবৃতি নীচের মত কিছু দেখতে হবে।

import LoginPage from "../integration/PageObject/LoginPage"

ধাপ 2: যেহেতু আমরা মোচা ব্যবহার করি, তাই আমরা আমাদের টেস্ট কেস ভিতরে লিখব describe() এবং it() ব্লক বর্ণনা () একটি প্রতিনিধিত্ব করে পরীক্ষা স্যুট, এবং এটি () একটি প্রতিনিধিত্ব করে পরীক্ষা ক্ষেত্রে। উভয় ব্লক একটি ফাংশন এবং একটি স্ট্রিং প্যারামিটার গ্রহণ করে যার মধ্যে রয়েছে বিবরণ পরীক্ষার

describe("Cypress POM Test Suite", function () {
})

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
ব্লকের বর্ণনা দাও

বর্ণনা ব্লকের ভিতরে, আমরা আমাদের লিখব it() বৈধ শংসাপত্র সহ লগইন হিসাবে বর্ণনা যোগ করে।

it("Login with valid credentials", function () {
       
    })

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
এটা ব্লক

ধাপ 3: আমাদের পেজ অবজেক্ট ফাইল থেকে আমাদের পদ্ধতিগুলি অ্যাক্সেস করতে, আমাদের আমাদের লগইন ক্লাসের জন্য একটি উদাহরণ তৈরি করা উচিত। লগইন ক্লাসের জন্য একটি উদাহরণ তৈরি করতে, আমাদের অবশ্যই একটি পরিবর্তনশীল ঘোষণা করতে হবে এবং এটি ব্যবহার করে আমাদের ক্লাস ফাইলে বরাদ্দ করতে হবে নতুন কীওয়ার্ড ঘোষিত ভেরিয়েবলের সাথে, আমরা সহজেই পৃষ্ঠা অবজেক্ট ফাইল থেকে পদ্ধতিগুলি অ্যাক্সেস করতে পারি।

                                               const login = new LoginPage();
উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
একটি ক্লাসের দৃষ্টান্ত

বিঃদ্রঃ: ভেরিয়েবলের সাথে login, আমরা পৃষ্ঠা অবজেক্ট ক্লাস থেকে পদ্ধতিগুলি অ্যাক্সেস করতে পারি। যখন আমরা টাইপ করা শুরু করি login। , vscode LoginPage.js ফাইলে উপলব্ধ সমস্ত পদ্ধতির পরামর্শ তালিকাভুক্ত করবে। এটি আমাদের যাচাই করতে সাহায্য করে যে আমরা আমাদের ক্লাস সঠিকভাবে রপ্তানি ও আমদানি করেছি!

ধাপ 4: আসুন আমাদেরকে কল করি navigate() ইউআরএল দেখার পদ্ধতি। এটি আমাদের পরীক্ষার ক্ষেত্রে প্রথম পদক্ষেপ।

/// <reference types="cypress" />

import LoginPage from "./PageObject/LoginPage"

describe("Cypress POM Test Suite", function () {
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
    });
});

ধাপ 5: আমাদের ইমেল ক্ষেত্রে ব্যবহারকারীর নাম লিখতে হবে। আমরা অ্যাক্সেস করি enterEmail() সাথে লগইন অবজেক্ট। enterEmail() পদ্ধতি একটি প্যারামিটার গ্রহণ করে ব্যবহারকারীর নাম। সুতরাং আমাদের ব্যবহারকারীর নামের মান a হিসাবে পাস করা উচিত স্ট্রিং আমাদের স্পেক ফাইলে

/// <reference types="cypress" />

import LoginPage from "./PageObject/LoginPage"

describe("Cypress POM Test Suite", function () {
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
        login.enterEmail('admin@yourstore.com');
    })
})

ধাপ 6: ধাপ 5 এর অনুরূপ, আমাদের আমাদের কল করা উচিত enterPassword() স্ট্রিং এ প্যারামিটার হিসেবে পাসওয়ার্ড পাস করার পদ্ধতি।

/// <reference types="cypress" />

import LoginPage from "./PageObject/LoginPage"

describe("Cypress POM Test Suite", function () {
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
        login.enterEmail('admin@yourstore.com');
        login.enterPassword('admin');
    })
})

ধাপ 7: পরবর্তী, আমাদের লগইন বোতামে ক্লিক করতে হবে। আমরা পদ্ধতি কল করব submit() আমাদের পৃষ্ঠা অবজেক্ট ফাইল থেকে।

/// <reference types="cypress" />

import LoginPage from "./PageObject/LoginPage"

describe("Cypress POM Test Suite", function () {
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
        login.enterEmail('admin@yourstore.com');
        login.enterPassword('admin');
        login.submit();
    })
})

ধাপ 8: লগ ইন করার পরে, আমাদের URL টি দৃert় করতে হবে। আমরা ইউআরএল কিনা তা যাচাই করব সমান লগইন করার পর URL- এ। দৃer়তার জন্য, আমরা ব্যবহার করব চা অ্যাসারশন লাইব্রেরি, যা সাইপ্রেস দিয়ে অন্তর্নির্মিত।

/// <reference types="cypress" />

import LoginPage from "./PageObject/LoginPage"

describe("Cypress POM Test Suite", function () {
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
        login.enterEmail('admin@yourstore.com');
        login.enterPassword('admin');
        login.submit();
        cy.url().should('be.equal', 'https://admin-demo.nopcommerce.com/admin/')
    })
})

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
লগইন টেস্ট কেস

উপরের ছবিটি লগইন পরীক্ষার ক্ষেত্রে প্রতিনিধিত্ব করে। আমরা খুব কম সহজ ধাপে একটি পেজ অবজেক্ট মডেল দিয়ে একটি টেস্ট কেস লিখতে পেরেছি। এখন আসুন আমরা টেস্ট কেস চালাই এবং ফলাফল দেখি।

আমরা সাইপ্রেস টেস্ট রানার খুলব এবং স্পেক ফাইলে ক্লিক করে আমাদের টেস্ট কেস চালাব। এটা যাচাই কর প্রবন্ধ কিভাবে সাইপ্রেস টেস্ট রানার খুলবেন।

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
সাইপ্রাসে পরীক্ষার ফলাফল

হুররে! আমরা সফলভাবে একটি টেস্ট কেস লিখেছি যা সাইপ্রাসে পেজ অবজেক্ট মডেল ব্যবহার করে। আমরা রিয়েল-টাইম প্রকল্পগুলিতে এই প্যাটার্নটি অন্তর্ভুক্ত করতে পারি। এমন একটি উপায় রয়েছে যা দিয়ে আমরা একটি পৃষ্ঠা অবজেক্ট ফাইলে পদ্ধতিগুলি লিখতে পারি। আমি আপনাকে একটি উদাহরণ দেখিয়েছি যা মানসম্মত এবং যে কোন প্রকল্পের জন্য কাজ করে। আপনি শুধুমাত্র লিখতে পারেন রিটার্ন ফাংশন পৃষ্ঠা বস্তু ফাইলে এবং তারপর ক্লিক করুন এবং আদর্শ সরাসরি আমাদের স্পেক ফাইলে।

আমরা আরেকটি প্যাটার্ন দেখব যা আমরা প্রকল্পে ব্যবহার করতে পারি। এই পদ্ধতিটি পুরোপুরি সূক্ষ্মভাবে কাজ করবে।

এই প্রকারে, আমরা আমাদের পদ্ধতিতে শুধুমাত্র লোকেটার ফাংশন ফিরিয়ে দেব এবং পরীক্ষা ফাইলে কর্ম সম্পাদন করব। আমরা উপরে দেখেছি একই দৃশ্যের জন্য কোড লিখব।

পৃষ্ঠা বস্তু - LoginPage.js

class LoginPage {
    navigate() {
        cy.visit('https://admin-demo.nopcommerce.com/')
    }

    enterEmail() {
        return cy.get('[id=Email]')
    }

    enterPassword() {
        return cy.get('[id=Password]')

    }

    submit() {
        return cy.get('[type=submit]')
    }
}
export default LoginPage

আমরা উপরে দেখেছি, আমরা আমাদের ফাংশনের ভিতরে শুধুমাত্র লোকেটার লিখছি এবং সেগুলি ফিরিয়ে দিচ্ছি। রিটার্ন প্রতিনিধিত্ব করে যে নির্দিষ্ট পদ্ধতিটি অন্তর্গত ক্লাস LoginPage.js। আমরা আমাদের পদ্ধতিতে কোন কর্ম যোগ করছি না।

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
পৃষ্ঠা অবজেক্ট ফাইলের উদাহরণ

স্পেক ফাইল - POMDemo.spec.js

আমরা spec ফাইলের পদ্ধতিগুলি অ্যাক্সেস করার উদাহরণটি দেখব।

/// <reference types="cypress" />

import LoginPage from "./PageObject/LoginPage"

describe("Cypress POM Test Suite", function () {
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
        login.enterEmail().clear()
        login.enterEmail().type('admin@yourstore.com');
        login.enterPassword().clear()
        login.enterPassword().type('admin');
        login.submit().click();
        cy.url().should('be.equal', 'https://admin-demo.nopcommerce.com/admin/')
    });
});

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
স্পেক ফাইলের উদাহরণ

এখানে, আমরা PageObject ফাইল থেকে পদ্ধতিটি কল করি এবং টেস্ট কেস অ্যাকশন করি। তাই প্রথমে, আমরা আমাদের রেফারেন্স ভেরিয়েবল কল করছি লগইন এবং তারপর পদ্ধতি সঙ্গে এটি যোগ করা enterEmail() এবং পরিশেষে কর্ম যোগ করা আদর্শ। আমাদের মাঝে type(), আমরা ব্যবহারকারীর নাম পাস করছি মূল্য.

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
পরীক্ষার ফলাফল

আপনি দেখতে পাচ্ছেন, সমস্ত আদেশ কার্যকর করা হয়েছে, এবং পরীক্ষার কেসটি পাস হয়েছে!

আপনি আপনার প্রোজেক্ট এবং আপনার মতামত অনুসারে যে কোনও পেজ অবজেক্ট মডেল বেছে নিতে পারেন। শুধুমাত্র একটি পদ্ধতিতে আটকে থাকার কোন বিশেষ নিয়ম নেই।

সাইপ্রাসে পেজ অবজেক্ট মডেলের টেস্ট ডেটা সোর্স হিসেবে ফিক্সচার কিভাবে ব্যবহার করবেন?

আমাদের পেজ অবজেক্ট মডেলের উদাহরণগুলিতে, আমরা ব্যবহারকারীর নাম এবং পাসওয়ার্ড মান সরাসরি পেজ অবজেক্ট ফাইলে বা সরাসরি টেস্ট কেস ফাইলে পাস করেছি। কিভাবে ব্যবহার করতে হয় এই বিভাগটি বুঝতে পারবে ফিক্সচার সাইপ্রাসে ডেটা নিরাপদ রাখতে এবং প্রকাশ না করার জন্য। আমাদের চেষ্টা করা উচিত যে সমস্ত শংসাপত্র এবং ডেটা এক ফাইলে রাখা এবং সেগুলি অ্যাক্সেস করা। এইভাবে, এটি বজায় রাখা সহজ, এবং ব্যবহারকারীর নাম এবং পাসওয়ার্ডের মতো সংবেদনশীল তথ্য প্রকাশ করা হয় না। পেজ অবজেক্ট প্যাটার্নে আমাদের যে পদ্ধতিগুলো অনুসরণ করতে হবে তার মধ্যে এই পদ্ধতিটিও অন্যতম।

আমরা আগে যেমনটা আলোচনা করেছিলাম, ফিক্সচার একটি JSON ফাইল বা এক্সেল ফাইলে ডেটা সঞ্চয় করতে সাহায্য করে, অথবা Apache POI এর মতো একটি বাহ্যিক লাইব্রেরিতে। আমরা একটি ভেরিয়েবল তৈরি করে এই ডেটা ব্যবহার করব এবং সেগুলি আমাদের স্পেক ফাইলে অ্যাক্সেস করব। আসুন একটি উদাহরণ দিয়ে বুঝতে পারি।

সাইপ্রেস একটি ফোল্ডার সরবরাহ করে যার নাম "ফিক্সচার। ” আমরা একটি তৈরি করব তাদেরকে JSON ফাইল বলা হয় পরিচয়পত্র.JSON 'ফিক্সচার' ফোল্ডারের অধীনে।

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
JSON ফাইল তৈরি

আসুন আমাদের ব্যবহারকারীর নাম, পাসওয়ার্ড এবং ইউআরএল মানগুলি ঘোষণা করি যা আমাদের JSON ফর্ম্যাটে যাচাই করতে হবে credentials.json ফাইল.

{
    "username" : "admin@yourstore.com",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
Credentials.json ফাইলে মান পাস করা

পরীক্ষার কেস ফাইলে JSON ফাইল থেকে মানগুলি অ্যাক্সেস করা

যেহেতু আমরা আমাদের JSON ফাইলের মানগুলি সংজ্ঞায়িত করেছি, আমরা সেগুলি ব্যবহার করে আমাদের টেস্ট কেস ফাইলে অ্যাক্সেস করব রাজধানী সাইপ্রাস থেকে। আমরা JSON মান দিয়ে অ্যাক্সেস করব এই কীওয়ার্ড আসুন ফিক্সচার ফাংশনটি একটিতে মোড়ানো যাক আগে() ব্লক।

describe("Cypress POM Test Suite", function () {
 
before(function () {
        cy.fixture('credentials').then(function (testdata) {
            this.testdata = testdata
        })
})

cy.fixture ('প্রমাণপত্রাদি')। তারপর (ফাংশন (testdata) {this.testdata = testdata}) - এই লাইনটি প্রতিনিধিত্ব করে যে আমরা পাস করছি credentials.json আমাদের প্যারামিটার হিসাবে ফাইল cy.fixture () কমান্ড এখানে, এটি একটি JSON ফাইল কিনা তা আমাদের পাস করার প্রয়োজন নেই। শুধু ফাইলের নাম একাই পাস করুন। পরে, আমরা পাস টেস্টডাটা ফাংশনে একটি প্যারামিটার হিসাবে এবং অ্যাক্সেস করুন টেস্টডাটা পরিবর্তনশীল ব্যবহার করে এই.

/// <reference types="cypress" />

import LoginPage from "./PageObject/LoginPage"

describe("Cypress POM Test Suite", function () {

    before(function () {
        cy.fixture('credentials').then(function (testdata) {
            this.testdata = testdata
        })
    })
    it("Login with valid credentials", function () {
        const login = new LoginPage();
        login.navigate();
        login.enterEmail(this.testdata.username)
        login.enterPassword(this.testdata.password)
        login.submit();
        cy.url().should('be.equal', this.testdata.adminUrl)
    });
});

login.enterEmail (this.testdata.username) - এটি credentials.json ফাইল থেকে ইউজারনেম মান আনবে এবং ইমেইল ফিল্ডে পূরণ করবে।

login.enterPassword (this.testdata.password) - এটি credentials.json ফাইল থেকে পাসওয়ার্ড মান আনবে এবং পাসওয়ার্ড ফিল্ডে পূরণ করবে

cy.url ()। উচিত ('be.equal', this.testdata.adminUrl) - এটি credentials.json ফাইল থেকে adminUrl পাবে এবং দাবীতে যাচাই করবে

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
JSON ফাইল থেকে স্পেক ফাইলে ডেটা পাস করা

এখন, আসুন ফলাফলের জন্য টেস্ট কেস চালাই।

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেল
পরীক্ষার ফলাফল

আমরা দেখতে পাচ্ছি, পরীক্ষার মামলাগুলি কার্যকর করা হয়েছে এবং পাস হয়েছে। এই উদাহরণটি আপনাকে একটি মৌলিক ডেটা-চালিত পরীক্ষার কেস লিখতে সাহায্য করবে। আপনি এই পদ্ধতি ব্যবহার করে আপনার প্রকল্পে এটি অন্তর্ভুক্ত করতে পারেন। আপনি ফিক্সচার ফোল্ডারের অধীনে নতুন JSON ফাইল তৈরি করতে পারেন, পরীক্ষার ডেটা সম্পর্কিত মান যুক্ত করতে পারেন এবং যেকোনো টেস্ট ফাইল জুড়ে এটি অ্যাক্সেস করতে পারেন।

সচরাচর জিজ্ঞাস্য

সাইপ্রাস কি পৃষ্ঠা অবজেক্ট মডেল সমর্থন করে?

অবশ্যই. সাইপ্রেস সংগ্রহস্থলে পৃষ্ঠা এবং বস্তুর সাথে খেলার সমস্ত নমনীয়তা দেয়। এটি বাস্তবায়ন করা সহজ।

উপরের উদাহরণ থেকে কোন পৃষ্ঠা অবজেক্ট মডেল ব্যবহার করা উচিত?

পেজ অবজেক্ট মডেলের শুধুমাত্র একটি পদ্ধতিতে আটকে থাকার কোন বিশেষ নিয়ম নেই। আপনি উপরে আলোচনা করা হয়েছে যে কোন মডেল ব্যবহার করতে পারেন। আপনি আপনার প্রকল্প অনুযায়ী মডেল কাস্টমাইজ করতে মুক্ত।

সাইপ্রাসে পেজ অবজেক্ট মডেলে কেন আমি ফিক্সচার ব্যবহার করব?

ফিক্সচার ব্যবহারকারী নাম, পাসওয়ার্ড এবং ইউআরএলের মতো সংবেদনশীল ডেটা JSON বা এক্সেলের মতো আলাদা ফাইলে সংরক্ষণ করতে সাহায্য করে। এটি অ্যাপ্লিকেশনটির নিরাপত্তা নিশ্চিত করে এবং প্রকল্পের যেকোনো ফাইলে সহজেই তাদের অ্যাক্সেস করে। JSON ফাইল অ্যাক্সেস করতে, আমরা ব্যবহার করি ফিক্সচার আমাদের স্পেক ফাইলে এটি ব্যবহার করতে।

Aboutশ্বরিয়া লক্ষ্মী সম্পর্কে

উদাহরণ সহ সাইপ্রাসে ধাপে ধাপে পৃষ্ঠা অবজেক্ট মডেলআমি একটি পরীক্ষার উত্সাহী এবং পরীক্ষার ডোমেনে প্রায় 2+ বছরের অভিজ্ঞতা আছে। আমি পরীক্ষার বিষয়ে আগ্রহী এবং আমার ক্ষেত্রে নতুন জিনিসগুলি অন্বেষণ করতে এবং সেগুলি আমার সমবয়সীদের সাথে ভাগ করে নিতে ভালোবাসি। আমি আমার ফ্রি সময়ে সবচেয়ে সহজ তবে কার্যকর উপায়ে ব্লগ লেখা উপভোগ করি। পরীক্ষক হিসাবে, আমি নিখুঁত জিনিস পেতে পছন্দ করি, তাই আমি আমার পাঠকদের প্রযুক্তির নিখুঁত বোঝার আশা করি। আমি পরীক্ষার সাথে সম্পর্কিত নতুন প্রযুক্তিগুলির সাথে নিজেকে আপডেট রাখি এবং সেগুলি বোঝার জন্য সময় ব্যয় করি। শিক্ষার্থীদের পরীক্ষার ধারণাগুলি বুঝতে সাহায্য করতে পেরে আমি আনন্দিত।
লিঙ্কডইন - https://www.linkedin.com/in/aishwarya-lakshmi-n-46903217a এর মাধ্যমে সংযোগ করি

en English
X