PLEASE NOTE: AD0-E706 Adobe Commerce Cloud Developer Expert Certification will retire on March 31, 2022.
Introduction
This exam will validate the skills and knowledge needed to develop new JavaScript modules for Magento 2 and customize existing ones. It will verify if the developer understands the core of Magento JavaScript framework, is able to use its components in a proper way, understands the right way of customizing existing components and adding a new one. Special attention in the exam paid to UI Components; the exam will validate if the developer understands their purpose, area of application, architecture and lifecycle.
This exam includes not only the in-browser JavaScript framework, but also the related server-side configuration for layout, customer data sections and adminhtml UI Components.
Magento Certification Name Changes
Magento certification credentials were recently integrated into the Adobe Credentialing ecosystem. As a result the framework and names of Magento credential names have been changed to align with Adobe's credentialing framework and naming conventions. For more details, please visit here.
Adobe certification exams are developed with the participation of subject matter experts worldwide, following industry standards in developing fair and valid tests. Visit our FAQ page for more information.
Are you an Adobe partner?
An official Adobe Certified Expert designation acknowledges your established expertise to help current and future business clients succeed!
Partners with a status of bronze and higher receive a 33% discount on all certification exam pricing. Email spphelp@adobe.com to request your discount(s).
Where to start? Check out the Partner Learner Journey from the Adobe Solution Partner Program today.
Exam Guide Sections:
- Exam information
- Minimum Candidate Experience
- Exam objectives and scope
- Online sample test
- Preparing for the exam
Exam Information
- Exam number: AD0-E705
- Exam name: Adobe Certified Expert - Adobe Commerce JavaScript Developer
- Certificate level: Certified Professional
- Status: Active
- Available languages: English
- Number of questions: 60
- Formats: Multiple choice and multiple select
- Duration: 120 minutes
- Delivery: Onsite/Online proctored (requires camera access) or test center proctored
- Passing mark: 38/60
- Price: $225 USD / $150 USD (India only)
Minimum Candidate Experience
This exam is for a JavaScript developer with broad experience in customizing Magento JavaScript for at least 1 year.
Exam Objectives and Scope
Section 1: Technology Stack (20%)
- 1.1 Demonstrate understanding of RequireJS
- Describe the RequireJS framework and its approach to JavaScript module organization
- What is the main purpose of the RequireJS framework?
- What are the pros and cons of the AMD approach to JavaScript file organization?
- Which capabilities does RequireJS provide to create and customize JavaScript modules?
- Demonstrate the ability to use requirejs-config.js files in the development process
- What is a requirejs-config.js file?
- In which cases it is necessary to add configurations to it?
- What tools does it provide?
- What are global callbacks?
- How can mappings be used?
- https://requirejs.org/docs/api.html#config-callback
- Demonstrate the ability to use RequireJS plugins
- What are RequireJS plugins?
- What are the text and domReady plugins used for?
- 1.2 Demonstrate understanding of UnderscoreJS
- Demonstrate understanding of underscore utility functions
- What are the benefits of using the underscore library versus native JavaScript?
- Use underscore templates in customizations
- Describe how underscore templates are used.
- What are the pros and cons of using underscore templates?
- Describe how underscore templates are used in Magento together with the text RequireJS plugin.
- 1.3 Demonstrate understanding of jQuery UI widgets
- Demonstrate understanding of the jQuery framework and its role in the Magento JavaScript framework
- What is a jQuery library?
- What different components does it have (jQuery UI, jQuery events and so on)?
- How does Magento use it?
- 1.4 Demonstrate understanding of KnockoutJS
- Describe key KnockoutJS concepts
- Describe the architecture of the Knockout library: MVVC concept, observables, bindings.
- Demonstrate understanding of knockout templates
- What is the main concept of knockout templates?
- What are the pros and cons of knockout templates?
- Compare knockout templates with underscore JavaScript templates.
- Demonstrate understanding of the knockout-es5 library
Section 2: Magento JavaScript Basics (25%)
- 2.1 Demonstrate understanding of the modular structure of Magento
- Demonstrate understanding of the JavaScript file organization in Magento
- What file structure is used to organize JavaScript modules?
- Where does Magento locate a module’s JavaScript file?
- Where does Magento store the JavaScript library?
- Describe how static content is organized in Magento
- How does Magento expose a module's static content to the web requests?
- What are the different ways to deploy static content?
- 2.2 Describe how to use JavaScript modules in Magento
- Use requirejs-config.js files to create JavaScript customizations
- How do you ensure that a module will be executed before other modules?
- How can an alias for a module be declared?
- What is the purpose of requirejs-config.js callbacks?
- Describe different types of Magento JavaScript modules
- Plain modules
- jQuery UI widgets
- UiComponents
- 2.3 Demonstrate ability to execute JavaScript modules
- Demonstrate the ability to use the data-mage-init attribute to run JavaScript modules
- What is the purpose and syntax of the data-mage-init attribute?
- How is it used to execute JavaScript modules?
- Demonstrate the ability to use text/x-magento-init scripts to execute JavaScript modules
- What is the purpose and syntax of the text/x-magento-init script tag?
- What is the difference between the text/x-magento-init and the data-mage-init methods of JavaScript module execution?
- Describe advanced methods of executing JavaScript modules
- How do you execute a JavaScript module in an AJAX response and in dynamic code stored in a string?
- 2.4 Describe jQuery UI widgets in Magento
- Describe how Magento uses jQuery widgets, and demonstrate an understanding of the $.mage object
- What is the role of jQuery widgets in Magento?
- What are typical widgets?
- How are Magento jQuery widget modules structured?
- Describe how Magento executes jQuery widgets
- How are Magento jQuery widgets executed with data-mage-init and text/x-magento-init?
- 2.5 Demonstrate ability to customize JavaScript modules
- Use Magento JavaScript mixins for customizations
- Describe advantages and limitations of using mixins.
- What are cases where mixins cannot be used?
- Describe how to customize jQuery widgets in Magento
- How can a new method be added to a jQuery widget?
- How can an existing method of a jQuery widget be overridden?
- What is the difference in approach to customizating jQuery widgets compared to other Magento JavaScript module types?
Section 3: Magento Core JavaScript Library (19%)
- 3.1 Demonstrate understanding of the mage library
- Describe different types of Magento JavaScript templates
- Magento pseudo ES6 literals and underscore templates in Magento
- Describe how to use storage and cookies for JavaScript modules
- How do you use cookies in the module?
- How is localStorage used in Magento?
- Demonstrate the ability to use the JavaScript translation framework
- How are CSV translations exported to be available in JavaScript modules?
- How is a new translation phrase added using JavaScript methods?
- Describe the capabilities of the JavaScript framework utils components
- What are the different components available through the mage/utils module?
- Demonstrate the ability to use and customize the validation module
- What is the architecture of the validation modules in Magento?
- How can a custom validation rule be added?
- How can an existing rule be customized?
- 3.2 Demonstrate understanding of mage widgets
- Describe the collapsible jQuery widgets in the Magento JavaScript library and how to use them
- Which collapsible widgets are available in Magento?
- How do you use them?
- Demonstrate the ability to use the popup and modal widgets
- How do you create a new popup, dialog, or modal with the Magento components?
- Describe the different jQuery widgets in the Magento JavaScript library
- Which other widgets are available in the Magento JavaScript library?
- How do you use them?
- 3.3 Demonstrate the ability to use the customer-data module
- Demonstrate understanding of the customer-data module concept
- What is private data?
- Why do we need to store information in the browser?
- What are performance considerations?
- Demonstrate understanding of how to use the customer-data module in customizations
- How is the customer-data module structured?
- How is data accessed, invalidated, or set?
- Describe how to use sections.xml to modify the information available through the customer-data module
- How can a sections.xml file be used to add a new section and to modify the invalidation rules of an existing section?
- How can a customization change the way existing sections work?
Section 4: UI Components (24%)
- 4.1 Demonstrate understanding of Knockout customizations
- Describe Magento modifications to the Knockout template engine
- Describe the remote template engine, template syntax, custom tags and attributes, and the rendering mechanism.
- Demonstrate the ability to use the custom Knockout bindings provided by Magento
- Where can a full list of custom bindings be found?
- What are they used for?
- What alternatives are there?
- Describe the Knockout scope binding
- What is the purpose of the scope binding?
- What Knockout problem does it solve?
- How exactly does this binding work?
- Demonstrate the ability to use the scope binding in customizations
- How is the scope binding used?
- How do nested scopes work?
- How can data of a parent scope be accessed from a child?
- How can the scope binding be applied to HTML in Ajax responses?
- 4.2 Demonstrate understanding of Magento UI components
- Describe how uiComponents are executed in Magento
- What is the difference in uiCompnent execution compared to other JavaScript module types?
- What does it mean to "execute a uiComponent"?
- Why do we need the app component to execute uiComponents?
- What is the role of the layout component?
- Describe the structure of a UiComponent
- What is uiClass?
- How does it instantiate uiComponents?
- How can existing component instances be accessed?
- How can a uiComponent be modified?
- How do you extend an existing uiComponent?
- What is the role of the uiElement and uiCollection modules?
- Demonstrate the ability to create a uiComponent with its own data, or operate with data of existing uiComponents
- How does a uiComponent access the data it needs?
- What are the requirements for a subcomponent to provide data?
- How can data be loaded by Ajax?
- How can a component receive the data when it is loaded?
- Describe the process of sharing data between components
- How can one uiComponent instance access data of another instance?
- How can components communicate while taking into account their asynchronous nature?
- 4.3 Demonstrate the ability to use UI components
- Describe the uiComponents lifecycle
- What are the stages of uiComponent execution?
- What is the role of the layout module, and how does it load components, children, and data?
- What are the types of components it supports?
- Demonstrate the ability to use uiComponents configuration to modify existing instances and create new instances
- Describe the definitons.xml file and uiComponent instance XML files.
- How can you modify an existing instance of a uiComponent using a configuration file?
- What is the role of the Magento layout in the uiComponent workflow?
- 4.4 Demonstrate understanding of grids and forms
- Customize existing grids and create new grids
- How do you create a grid?
- How do you add an image column, standard validation, custom validation rules, and custom column types to a grid?
- How do you modify existing grids?
- How do you customize the data loading process for a grid, including filters and sorting?
- Customize existing forms and create new forms
- How do you create a form, a form with tabs, a form with groups of fields, a form with dynamic fields (when one field change will cause a change in another place)?
- How do you customize existing forms?
- How do you add validation to fields, including custom validation rules?
- How can you add a file upload field, an image field, and a custom field to a form?
Section 5: Checkout (12%)
- 5.1 Demonstrate understanding of checkout architecture
- Describe key classes in checkout JavaScript: Actions, models, and views
- What are actions, models, and views used for in checkout?
- How does Magento store checkout data?
- What type of classes are used for loading/posting data to the server?
- How does a view file update current information?
- Demonstrate the ability to use the checkout steps for debugging and customization
- How do you add a new checkout step?
- How do you modify the order of steps?
- Debug the data flow of each step.
- How do you customize a step's logic?
- Customize the shipping step rendering and saving
- How does Magento save information about the shipping address for different types of checkout (logged in with default address, without default address, not logged in)?
- How does Magento obtain the list of available shipping methods?
- Which events can trigger this process?
- How does Magento save a selected address and shipping method?
- 5.2 Demonstrate understanding of payments
- Describe the architecture of JavaScript payment modules
- Add new payment method and payment methods renderers.
- Modify an existing payment method.
- Demonstrate the ability to use the payment data flow for debugging and customizations
- How does a payment method send its data to the server?
- What is the correct approach to deal with sensitive data?
- Demonstrate the ability to customize and debug the order placement process in JavaScript
- Describe the data flow during order placement
- Which modules are involved?
- How can the payment step be separated from the order placement?
Sample Questions
The sample questions allows you to see the type and format of questions that you will encounter in the actual exam. The results of the sample questions do not predict your actual test results.
Answer Key
Preparing for the Exam
You are not required to complete training before taking the exam, and training alone will not provide you with the knowledge and skills required to pass the exam. A combination of training and successful, on-the-job experience are critical to providing you with the repository needed to pass the exam.
Recommended Preparation:
- No prerequisites
- We recommend taking the JavaScript Development in Magento 2 (Instructor-led) course as a first step.
Questions and Inquiries?
Please contact the Adobe Credential Program Customer Support team.
The content of this exam guide is subject to changes and updates. Last update April 2020.
Credits:
Created with an image by Tomasz Zajda - "Alloy Car Wheel Closeup"