Slides done for the talk on CodeCeption given during the April London Yii Meetup.
The full screencast of the talk can be viewed here: https://www.youtube.com/watch?v=FclV9ML7bH4
The document discusses Node.js buffers and various operations that can be performed on buffers such as creating, writing to, reading from, concatenating, comparing, copying, slicing buffers as well as getting the buffer length. It provides code examples for each operation. At the end, it suggests writing a menu driven program to perform various buffer operations like create, read, write, get length, copy, slice, compare and concatenate buffers.
This document provides an overview of Linux Bash shell scripting. It covers topics such as writing basic scripts, using variables and arithmetic, conditional statements, loops, reading/writing files, and more. Examples are given for many common scripting tasks like renaming files, checking disk space, searching files, generating random numbers, and calculating values. The document is intended to teach the basics of shell scripting through explanations and code samples.
The document discusses the Singleton and Observer design patterns. The Singleton pattern ensures that only one instance of a class exists and provides a global access point to that instance. The Observer pattern defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified automatically. It provides a way to notify multiple objects about changes to another object in a loosely coupled manner. The document includes code examples of implementing both patterns to demonstrate their solutions to common problems like ensuring a single connection or notifying dependents of state changes.
This document provides a classification and overview of various pump types:
1) Pumps are classified into kinetic, centrifugal, turbine, positive displacement, and special pumps. Centrifugal pumps are the most common and economical for many applications.
2) Centrifugal pumps use rotation to impart kinetic energy and increase pressure. They are further classified by liquid flow path as radial, mixed or axial flow.
3) Turbine pumps obtain high heads through multiple impeller stages and tight clearances that minimize recirculation losses.
Valves operation and functions complete guideElsayed Amer
Eng. El Sayed Amer is a senior process and production engineer at Suez Oil Co. He has worked as a drilling and completion engineer for Weatherford drilling international. He is also an instructor for oil and gas courses. He is a member of several professional engineering organizations and certified in process modeling and reservoir simulation software. He has expertise in valves technology and operations in the process industry.
Au terme de ce Module, tout étudiant consciencieux, régulier, attentif et discipliné sera capable de :
Comprendre les concepts et principes généraux l’environnement mobile;
Maitriser Les bases du développement d'applications Android;
Enfin, développer les applications avec MIT-App Inventor.
This presentation introduces PHP unit testing in Yii. It covers test-driven development (TDD) principles, the different types of tests like unit tests and integration tests, how to set up PHPUnit and write tests in Yii, using fixtures to test database interactions, and invoking tests from the command line. Examples are provided of writing unit tests for models and using fixtures to load test data.
Acceptance & Functional Testing with Codeception - Devspace 2015 Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It begins with an introduction to the speaker and defines unit, functional, and acceptance testing. It then demonstrates how to install and configure Codeception, generate tests for a sample Laravel application, and run different types of tests including functional API tests and acceptance tests using PhantomJS. Challenges with acceptance tests like speed and pinpointing failures are also addressed. Resources for further learning about Codeception and testing are provided.
Codeception is a testing framework that allows testing at multiple levels: acceptance, functional, and unit. It provides bundled actions and assertions to make testing easier. Codeception tests can be run with PHPBrowser, which uses a PHP scraper, or Selenium WebDriver to test in a real browser. Modules in Codeception encapsulate common testing actions and reduce the need to rewrite test code.
This presentation provides an overview of the Yii PHP framework. It discusses Yii's origins, key features including MVC architecture, ORM, automatic code generation and testing support. The presentation also compares Yii to other frameworks like Symfony and Zend, showing how Yii offers high performance. Organizations can benefit from Yii as it is open source, easy to learn yet powerful, and helps ensure on-time delivery through test-driven development.
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It introduces Codeception and the different types of testing including unit, functional, and acceptance testing. It then provides examples of writing functional tests for a login feature and acceptance tests using PhantomJS to test interactions on a real browser. Screenshots are included when acceptance tests fail to help debug issues.
XDebug is a PHP extension that provides debugging and profiling capabilities. It allows you to set breakpoints and pause script execution, avoiding the need to add print/echo statements for debugging. XDebug works with IDEs like PHPStorm, Sublime Text, and Vim. The document provides instructions for installing XDebug on Ubuntu, Mac, and Windows systems, and configuring it to work with PHPStorm or Sublime Text. It also describes various debugging tools available in the IDEs like breakpoints, stepping, and viewing variables.
Yii is a PHP framework based on object-oriented PHP5 that was developed by Qiang Xue in 2008. It is a high-performance, component-based framework for developing large-scale web applications using the Model-View-Controller (MVC) pattern. Key features include database access, form validation, authentication, caching, and code generation capabilities. While Yii supports developing many types of web applications, it does not fully utilize the most modern PHP 5.3/6 features, so its developers have decided to rewrite the entire framework from scratch.
Autotests introduction discusses good practices for writing automated tests including using Codeception, Selenium, and Jenkins. It provides an overview of setting up testing environments and executing tests across different browsers and platforms. The document also covers best practices for writing tests such as navigating between pages, comparing actual and expected results, handling asynchronous elements, and using conditionals and loops. Overall, the document is an introduction to automated testing that outlines the tools, frameworks, and methodologies used for writing reliable and maintainable tests.
This document summarizes a presentation about testing in Craft CMS. The presentation covers:
1) The types of tests including unit, functional, and acceptance tests and how they help projects.
2) How to set up and run Codeception tests in Craft including installing Codeception, setting up directories and files, and adding tests.
3) Tips for successful testing like using fixtures, offloading tests to a queue, and different types of tests like email, Twig, performance and accessibility testing.
This document discusses different types of testing in Codeception including unit testing, functional testing, and acceptance testing. It provides examples of how to write tests for each type using Codeception and frameworks like PHPUnit. It also covers topics like using modules, database testing, stubs, and debugging tests.
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making it fail, making it pass, and refactoring code. Using TDD generates an automated test suite that gives developers confidence to refactor and change code quickly. Unit tests validate individual code units in isolation while feature tests validate code as a user would interact with it. Code coverage metrics help ensure tests cover enough of the codebase.
Appium is a tool for automating native and hybrid mobile apps. This document discusses how to set up an Appium project to test Android apps. It covers installing Appium and related tools on Windows, setting desired capabilities, locating elements, performing actions, validating results, and running tests. The goal is to create an IntelliJ project that uses Appium to test a sample Android app by interacting with app elements and verifying the app's behavior.
This document provides an overview of testing with Behat, a behavior-driven development framework for PHP. It discusses how Behat allows writing tests focused on describing features and behaviors using a domain-specific language. Key points include how Behat scenarios map to executable acceptance criteria, how contexts are used to define step implementations, and how Behat can be integrated with browser automation tools like Mink and Selenium to test web applications. The document also provides examples of running Behat tests against external APIs and refactoring code based on test results.
The document summarizes a presentation on software testing concepts and practices like test-driven development, terminology used in testing, popular tools used for testing, and resources for learning more about testing. The presentation covered topics like unit testing, integration testing, test-driven development principles and practices, popular IDEs, build tools, testing frameworks, mock object libraries, code coverage tools, load testing tools, acceptance testing tools, and continuous integration tools. It also demonstrated testing using an open-source medical record system.
The document summarizes a presentation on software testing concepts and practices like test-driven development, terminology used in testing, popular tools used for testing, and resources for learning more about testing. The presentation covered topics like unit testing, integration testing, test-driven development principles and practices, popular IDEs, build tools, testing frameworks, mock object libraries, code coverage tools, load testing tools, acceptance testing tools, and continuous integration tools. It also demonstrated testing using an open-source medical record system.
Stopping the Rot - Putting Legacy C++ Under TestSeb Rose
The document discusses introducing unit testing to legacy C++ code. It covers choosing a testing framework, writing initial tests and mocks, and various refactoring techniques like wrapping dependencies, extracting components, and adding non-intrusive C seams to facilitate testing. The goal is to incrementally make the code more testable while maintaining functionality through practices like test-driven development.
This document provides an overview of Selenium, an open source automated web testing tool. It discusses the different components of Selenium including Selenium IDE for recording tests in Firefox, Selenium RC for running tests on multiple browsers, and Selenium Grid for distributed testing. The document demonstrates how to record, playback, and code tests using Selenium and covers reporting, advanced topics like data-driven testing, and alternatives for load testing.
- Mayur Gogawale currently works at Capita India pvt. Ltd as a Software Consultant and previously worked at AgileSoftSystems and Optra Systems Pvt. Ltd in Pune.
- He has over 3.8 years of experience in software testing including manual and automation testing in various domains.
- His technical skills include Selenium, Silk Test, Coded Ui, Java, .Net, SQL, JIRA, ClearQuest and version control tools like GitHub and ClearCase.
The document discusses continuous feature development. It defines a feature as a set of expected functional behaviors from a client. Continuous feature development involves incrementally building these expected behaviors. This approach is needed because clients' expectations, business needs, user perceptions, and competitive advantages are continually changing. Managing continuous feature development presents challenges like integrating new features, maintaining stability, seamless integration, and managing trust. The document recommends practices like acceptance test-driven development, test-driven development, behavior-driven development, continuous integration, coding in feature branches, code reviews, maintaining a production branch, using staging servers, and continuous integration to help address these challenges.
This presentation introduces PHP unit testing in Yii. It covers test-driven development (TDD) principles, the different types of tests like unit tests and integration tests, how to set up PHPUnit and write tests in Yii, using fixtures to test database interactions, and invoking tests from the command line. Examples are provided of writing unit tests for models and using fixtures to load test data.
Acceptance & Functional Testing with Codeception - Devspace 2015 Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It begins with an introduction to the speaker and defines unit, functional, and acceptance testing. It then demonstrates how to install and configure Codeception, generate tests for a sample Laravel application, and run different types of tests including functional API tests and acceptance tests using PhantomJS. Challenges with acceptance tests like speed and pinpointing failures are also addressed. Resources for further learning about Codeception and testing are provided.
Codeception is a testing framework that allows testing at multiple levels: acceptance, functional, and unit. It provides bundled actions and assertions to make testing easier. Codeception tests can be run with PHPBrowser, which uses a PHP scraper, or Selenium WebDriver to test in a real browser. Modules in Codeception encapsulate common testing actions and reduce the need to rewrite test code.
This presentation provides an overview of the Yii PHP framework. It discusses Yii's origins, key features including MVC architecture, ORM, automatic code generation and testing support. The presentation also compares Yii to other frameworks like Symfony and Zend, showing how Yii offers high performance. Organizations can benefit from Yii as it is open source, easy to learn yet powerful, and helps ensure on-time delivery through test-driven development.
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Joe Ferguson
The document discusses using Codeception for acceptance and functional testing. It introduces Codeception and the different types of testing including unit, functional, and acceptance testing. It then provides examples of writing functional tests for a login feature and acceptance tests using PhantomJS to test interactions on a real browser. Screenshots are included when acceptance tests fail to help debug issues.
XDebug is a PHP extension that provides debugging and profiling capabilities. It allows you to set breakpoints and pause script execution, avoiding the need to add print/echo statements for debugging. XDebug works with IDEs like PHPStorm, Sublime Text, and Vim. The document provides instructions for installing XDebug on Ubuntu, Mac, and Windows systems, and configuring it to work with PHPStorm or Sublime Text. It also describes various debugging tools available in the IDEs like breakpoints, stepping, and viewing variables.
Yii is a PHP framework based on object-oriented PHP5 that was developed by Qiang Xue in 2008. It is a high-performance, component-based framework for developing large-scale web applications using the Model-View-Controller (MVC) pattern. Key features include database access, form validation, authentication, caching, and code generation capabilities. While Yii supports developing many types of web applications, it does not fully utilize the most modern PHP 5.3/6 features, so its developers have decided to rewrite the entire framework from scratch.
Autotests introduction discusses good practices for writing automated tests including using Codeception, Selenium, and Jenkins. It provides an overview of setting up testing environments and executing tests across different browsers and platforms. The document also covers best practices for writing tests such as navigating between pages, comparing actual and expected results, handling asynchronous elements, and using conditionals and loops. Overall, the document is an introduction to automated testing that outlines the tools, frameworks, and methodologies used for writing reliable and maintainable tests.
This document summarizes a presentation about testing in Craft CMS. The presentation covers:
1) The types of tests including unit, functional, and acceptance tests and how they help projects.
2) How to set up and run Codeception tests in Craft including installing Codeception, setting up directories and files, and adding tests.
3) Tips for successful testing like using fixtures, offloading tests to a queue, and different types of tests like email, Twig, performance and accessibility testing.
This document discusses different types of testing in Codeception including unit testing, functional testing, and acceptance testing. It provides examples of how to write tests for each type using Codeception and frameworks like PHPUnit. It also covers topics like using modules, database testing, stubs, and debugging tests.
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Test-driven development (TDD) is a software development process where test cases are written before code to validate requirements. The TDD process involves short cycles of adding a test, making it fail, making it pass, and refactoring code. Using TDD generates an automated test suite that gives developers confidence to refactor and change code quickly. Unit tests validate individual code units in isolation while feature tests validate code as a user would interact with it. Code coverage metrics help ensure tests cover enough of the codebase.
Appium is a tool for automating native and hybrid mobile apps. This document discusses how to set up an Appium project to test Android apps. It covers installing Appium and related tools on Windows, setting desired capabilities, locating elements, performing actions, validating results, and running tests. The goal is to create an IntelliJ project that uses Appium to test a sample Android app by interacting with app elements and verifying the app's behavior.
This document provides an overview of testing with Behat, a behavior-driven development framework for PHP. It discusses how Behat allows writing tests focused on describing features and behaviors using a domain-specific language. Key points include how Behat scenarios map to executable acceptance criteria, how contexts are used to define step implementations, and how Behat can be integrated with browser automation tools like Mink and Selenium to test web applications. The document also provides examples of running Behat tests against external APIs and refactoring code based on test results.
The document summarizes a presentation on software testing concepts and practices like test-driven development, terminology used in testing, popular tools used for testing, and resources for learning more about testing. The presentation covered topics like unit testing, integration testing, test-driven development principles and practices, popular IDEs, build tools, testing frameworks, mock object libraries, code coverage tools, load testing tools, acceptance testing tools, and continuous integration tools. It also demonstrated testing using an open-source medical record system.
The document summarizes a presentation on software testing concepts and practices like test-driven development, terminology used in testing, popular tools used for testing, and resources for learning more about testing. The presentation covered topics like unit testing, integration testing, test-driven development principles and practices, popular IDEs, build tools, testing frameworks, mock object libraries, code coverage tools, load testing tools, acceptance testing tools, and continuous integration tools. It also demonstrated testing using an open-source medical record system.
Stopping the Rot - Putting Legacy C++ Under TestSeb Rose
The document discusses introducing unit testing to legacy C++ code. It covers choosing a testing framework, writing initial tests and mocks, and various refactoring techniques like wrapping dependencies, extracting components, and adding non-intrusive C seams to facilitate testing. The goal is to incrementally make the code more testable while maintaining functionality through practices like test-driven development.
This document provides an overview of Selenium, an open source automated web testing tool. It discusses the different components of Selenium including Selenium IDE for recording tests in Firefox, Selenium RC for running tests on multiple browsers, and Selenium Grid for distributed testing. The document demonstrates how to record, playback, and code tests using Selenium and covers reporting, advanced topics like data-driven testing, and alternatives for load testing.
- Mayur Gogawale currently works at Capita India pvt. Ltd as a Software Consultant and previously worked at AgileSoftSystems and Optra Systems Pvt. Ltd in Pune.
- He has over 3.8 years of experience in software testing including manual and automation testing in various domains.
- His technical skills include Selenium, Silk Test, Coded Ui, Java, .Net, SQL, JIRA, ClearQuest and version control tools like GitHub and ClearCase.
The document discusses continuous feature development. It defines a feature as a set of expected functional behaviors from a client. Continuous feature development involves incrementally building these expected behaviors. This approach is needed because clients' expectations, business needs, user perceptions, and competitive advantages are continually changing. Managing continuous feature development presents challenges like integrating new features, maintaining stability, seamless integration, and managing trust. The document recommends practices like acceptance test-driven development, test-driven development, behavior-driven development, continuous integration, coding in feature branches, code reviews, maintaining a production branch, using staging servers, and continuous integration to help address these challenges.
Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!Puneet Kala
Presentation from JAB-2014, I have talked about how we have setup PHPUnit and Selenium Webdriver for Testing Joomla CMS!,
How we can setup System test Suite for a Joomla! Component
Bridging the communication Gap & Continuous Deliverymasoodjan
This is a case study of a top retailer in UK which was following Agile but not all the Agile practices. We will discuss how collaboration between business and engineering team improved using BDD and how it was used to generate automated acceptance tests. We will also discuss how continuous integration was implemented which laid foundation for continuous delivery.
This document discusses different types of automated testing in Joomla including unit tests, integration tests, system/browser tests, JavaScript tests, and code style tests. It provides examples of each type of test and how they benefit developers. It also explains how these different tests are implemented in the Joomla codebase and can be run locally for developers to validate their code changes before creation a pull request. The goal of these automated tests is to deliver a more reliable and bug-free application by testing each change and to welcome new volunteers to contribute to expanding test coverage.
How to Build and Maintain Quality Drupal Sites with Automated TestingAcquia
Automated testing has greatly improved the Drupal core development process. With automated testing over 24,500 unique core patches have been reviewed, and almost 19,000 test assertions are now run against every core patch. The result has been faster development cycle, more stable releases, and the ability to add features more quickly to Drupal core.
The document provides an overview of getting started with Selenium and outlines 8 steps to write automated tests:
1. Define a test strategy by determining what to test and which browsers to support
2. Choose a programming language like Java and set up dependencies
3. Learn Selenium fundamentals like locating elements and common actions
4. Write a first test to log in to a sample site
5. Create page objects and a base page to make tests reusable and maintainable
6. Add waits to make tests more resilient when waiting for elements
7. Set up a test harness for centralized setup/teardown, reporting and parallelization
8. Add cross-browser testing by using browser drivers locally or remotely
Behavior & Specification Driven Development in PHP - #OpenWestJoshua Warren
This document summarizes a presentation about using Behavior Driven Development (BDD) and Specification Driven Development (SDD) with PHP using the tools Behat and PHPSpec. It introduces BDD as focusing on complete features by writing user stories, while SDD focuses on writing specifications for how code should work before writing the code. The presentation demonstrates setting up a sample project using these tools, writing feature files and specifications, generating code stubs, implementing the code, and running the automated tests to verify everything works as specified.
Code Coverage for Total Security in Application MigrationsDana Luther
So the time has come to take the leap and upgrade your application to a new major version of the underlying framework, or, perhaps, to an entirely different framework... how do you ensure that none of your functionality or usability is impacted by a potentially drastic rewrite of the underlying systems? How can you move forward with 100% confidence in your migrated codebase? Testing, testing and more testing. Using a combination of unit, functional and acceptance tests can give you the certainty you need. In this talk, we will go over key strategies for ensuring that you begin with full code coverage and move forward with confidence.
How the US Navy Approaches DevSecOps with Raise 2.0Anchore
Join us as Anchore's solutions architect reveals how the U.S. Navy successfully approaches the shift left philosophy to DevSecOps with the RAISE 2.0 Implementation Guide to support its Cyber Ready initiative. This session will showcase practical strategies for defense application teams to pivot from a time-intensive compliance checklist and mindset to continuous cyber-readiness with real-time visibility.
Learn how to break down organizational silos through RAISE 2.0 principles and build efficient, secure pipeline automation that produces the critical security artifacts needed for Authorization to Operate (ATO) approval across military environments.
In this session we cover the benefits of a migration to Cosmos DB, migration paths, common pain points and best practices. We share our firsthand experiences and customer stories. Adiom is the trusted partner for migration solutions that enable seamless online database migrations from MongoDB to Cosmos DB vCore, and DynamoDB to Cosmos DB for NoSQL.
Looking for a BIRT Report Alternative Here’s Why Helical Insight Stands Out.pdfVarsha Nayak
The search for an Alternative to BIRT Reports has intensified as companies face challenges with BIRT's steep learning curve, limited visualization capabilities, and complex deployment requirements. Organizations need reporting solutions that offer intuitive design interfaces, comprehensive analytics features, and seamless integration capabilities – all while maintaining the reliability and performance that enterprise environments demand.
A brief introduction to OpenTelemetry, with a practical example of auto-instrumenting a Java web application with the Grafana stack (Loki, Grafana, Tempo, and Mimir).
Advanced Token Development - Decentralized Innovationarohisinghas720
The world of blockchain is evolving at a fast pace, and at the heart of this transformation lies advanced token development. No longer limited to simple digital assets, today’s tokens are programmable, dynamic, and play a crucial role in driving decentralized applications across finance, governance, gaming, and beyond.
AI-Powered Compliance Solutions for Global Regulations | Certivocertivoai
Certivo offers AI-powered compliance solutions designed to help businesses in the USA, EU, and UK simplify complex regulatory demands. From environmental and product compliance to safety, quality, and sustainability, our platform automates supplier documentation, manages certifications, and integrates with ERP/PLM systems. Ensure seamless RoHS, REACH, PFAS, and Prop 65 compliance through predictive insights and multilingual support. Turn compliance into a competitive edge with Certivo’s intelligent, scalable, and audit-ready platform.
How to Choose the Right Web Development Agency.pdfCreative Fosters
Choosing the right web development agency is key to building a powerful online presence. This detailed guide from Creative Fosters helps you evaluate agencies based on experience, portfolio, technical skills, communication, and post-launch support. Whether you're launching a new site or revamping an old one, these expert tips will ensure you find a reliable team that understands your vision and delivers results. Avoid common mistakes and partner with an agency that aligns with your goals and budget.
FME as an Orchestration Tool - Peak of Data & AI 2025Safe Software
Processing huge amounts of data through FME can have performance consequences, but as an orchestration tool, FME is brilliant! We'll take a look at the principles of data gravity, best practices, pros, cons, tips and tricks. And of course all spiced up with relevant examples!
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchMaxim Salnikov
Discover how Agentic Retrieval in Azure AI Search takes Retrieval-Augmented Generation (RAG) to the next level by intelligently breaking down complex queries, leveraging full conversation history, and executing parallel searches through a new LLM-powered query planner. This session introduces a cutting-edge approach that delivers significantly more accurate, relevant, and grounded answers—unlocking new capabilities for building smarter, more responsive generative AI applications.
Traditional Retrieval-Augmented Generation (RAG) pipelines work well for simple queries—but when users ask complex, multi-part questions or refer to previous conversation history, they often fall short. That’s where Agentic Retrieval comes in: a game-changing advancement in Azure AI Search that brings LLM-powered reasoning directly into the retrieval layer.
This session unveils how agentic techniques elevate your RAG-based applications by introducing intelligent query planning, subquery decomposition, parallel execution, and result merging—all orchestrated by a new Knowledge Agent. You’ll learn how this approach significantly boosts relevance, groundedness, and answer quality, especially for sophisticated enterprise use cases.
Key takeaways:
- Understand the evolution from keyword and vector search to agentic query orchestration
- See how full conversation context improves retrieval accuracy
- Explore measurable improvements in answer relevance and completeness (up to 40% gains!)
- Get hands-on guidance on integrating Agentic Retrieval with Azure AI Foundry and SDKs
- Discover how to build scalable, AI-first applications powered by this new paradigm
Whether you're building intelligent copilots, enterprise Q&A bots, or AI-driven search solutions, this session will equip you with the tools and patterns to push beyond traditional RAG.
Plooma is a writing platform to plan, write, and shape books your wayPlooma
Plooma is your all in one writing companion, designed to support authors at every twist and turn of the book creation journey. Whether you're sketching out your story's blueprint, breathing life into characters, or crafting chapters, Plooma provides a seamless space to organize all your ideas and materials without the overwhelm. Its intuitive interface makes building rich narratives and immersive worlds feel effortless.
Packed with powerful story and character organization tools, Plooma lets you track character development and manage world building details with ease. When it’s time to write, the distraction-free mode offers a clean, minimal environment to help you dive deep and write consistently. Plus, built-in editing tools catch grammar slips and style quirks in real-time, polishing your story so you don’t have to juggle multiple apps.
What really sets Plooma apart is its smart AI assistant - analyzing chapters for continuity, helping you generate character portraits, and flagging inconsistencies to keep your story tight and cohesive. This clever support saves you time and builds confidence, especially during those complex, detail packed projects.
Getting started is simple: outline your story’s structure and key characters with Plooma’s user-friendly planning tools, then write your chapters in the focused editor, using analytics to shape your words. Throughout your journey, Plooma’s AI offers helpful feedback and suggestions, guiding you toward a polished, well-crafted book ready to share with the world.
With Plooma by your side, you get a powerful toolkit that simplifies the creative process, boosts your productivity, and elevates your writing - making the path from idea to finished book smoother, more fun, and totally doable.
Get Started here: https://www.plooma.ink/
Have you upgraded your application from Qt 5 to Qt 6? If so, your QML modules might still be stuck in the old Qt 5 style—technically compatible, but far from optimal. Qt 6 introduces a modernized approach to QML modules that offers better integration with CMake, enhanced maintainability, and significant productivity gains.
In this webinar, we’ll walk you through the benefits of adopting Qt 6 style QML modules and show you how to make the transition. You'll learn how to leverage the new module system to reduce boilerplate, simplify builds, and modernize your application architecture. Whether you're planning a full migration or just exploring what's new, this session will help you get the most out of your move to Qt 6.
What is data visualization and how data visualization tool can help.pdfVarsha Nayak
An open source data visualization tool enhances this process by providing flexible, cost-effective solutions that allow users to customize and scale their visualizations according to their needs. These tools enable organizations to make data-driven decisions with complete freedom from proprietary software limitations. Whether you're a data scientist, marketer, or business leader, understanding how to utilize an open source data visualization tool can significantly improve your ability to communicate insights effectively.
GDG Douglas - Google AI Agents: Your Next Intern?felipeceotto
Presentation done at the GDG Douglas event for June 2025.
A first look at Google's new Agent Development Kit.
Agent Development Kit is a new open-source framework from Google designed to simplify the full stack end-to-end development of agents and multi-agent systems.
2. CodeCeption introduction and use in Yii
The current situation
(Potentially) fiddly system configuration
unless
the framework ships a testing environment
e.g.
db connection,
access to magic functions,
autoloading functionality,
...
3. CodeCeption introduction and use in Yii
Yet another tool?
NOPE
It’s been designed to ease the testing process.
It’s meant to be extensible and modular.
Creates uniformity across different test suites.
Works on top of other well known technologies,
e.g. PHPUnit, PHPBrowser, Selenium, etc...
5. CodeCeption introduction and use in Yii
Should you bother writing tests?
Yes, you really should.
And no, you don’t need to test everything.
You need a QA strategy,
which comes with proper planning
and a desire to avoid spending the weekend fixing bugs.
Unless you’re a maniac
who loves to deliver buggier code in production.
6. CodeCeption introduction and use in Yii
What kind of tests?
Acceptance High-level tests, can have no knowledge of the technologies used.
Testing done from the non-technical person PoV (called WebGuy):
“uses the browser to test the website works correctly.”
Can be plugged into different testing suites: e.g. PHPBrowser, Selenium, Sahi,..
7. CodeCeption introduction and use in Yii
What kind of tests?
Acceptance High-level tests, can have no knowledge of the technologies used.
Testing done from the non-technical person PoV (called WebGuy):
“uses the browser to test the website works correctly.”
Can be plugged into different testing suites: e.g. PHPBrowser, Selenium, Sahi,..
Functional Mid-level tests. Covers functionality from the server perspective.
The person testing (called TestGuy) knows how the application works, passes
different $_GET, $_POST and $_REQUEST variables to ensure the functionality
covers all known and corner cases.
Simpler than Acceptance, does not need a webserver, uses PHPBrowser.
8. CodeCeption introduction and use in Yii
What kind of tests?
Acceptance High-level tests, can have no knowledge of the technologies used.
Testing done from the non-technical person PoV (called WebGuy):
“uses the browser to test the website works correctly.”
Can be plugged into different testing suites: e.g. PHPBrowser, Selenium, Sahi,..
Functional
Unit
Mid-level tests. Covers functionality from the server perspective.
The person testing (called TestGuy) knows how the application works, passes
different $_GET, $_POST and $_REQUEST variables to ensure the functionality
covers all known and corner cases.
Simpler than Acceptance, does not need a webserver, uses PHPBrowser.
Low-level tests. Single isolated tests.
The person testing, CodeGuy, knows the internals of the application and tests
database operations and anything else that might need proof of concept.
Packages PHPUnit and provides a further abstraction over it to simplify its use.
9. CodeCeption introduction and use in Yii
Preliminary steps in Yii2
using the Yii2-app-base, read /tests/README.md first:
$ composer require --dev "codeception/codeception: 1.8.*@dev"
"codeception/specify: *"
"codeception/verify: *"
Then run the build script in order to populate the missing bits
$ vendor/bin/codecept build
Building Guy classes for suites: functional, acceptance, unit
TestGuy includes modules: Filesystem, TestHelper, Yii2
TestGuy.php generated successfully. 53 methods added
WebGuy includes modules: WebHelper, PhpBrowser
WebGuy.php generated successfully. 48 methods added
CodeGuy includes modules: CodeHelper
CodeGuy.php generated successfully. 1 methods added
10. CodeCeption introduction and use in Yii
Configure your entry URLs
configure the TEST_ENTRY_URL variable in tests/_boostrap.php
$ grep TEST_ENTRY_URL tests/_bootstrap.php
defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/web/index-test.php');
$_SERVER['SCRIPT_NAME'] = TEST_ENTRY_URL;
Set the URL for the acceptance tests (based on the module you want to use)
$ grep -B1 url tests/acceptance.suite.yml
PhpBrowser:
url: 'http://sandbox/yii2-test/'
# WebDriver:
# url: 'http://localhost'
11. CodeCeption introduction and use in Yii
Implement and run the tests
Generate and implement the tests in the template given:
$ vendor/bin/codecept generate:cept acceptance Homepage
Test was created in HomepageCept.php
$ vim tests/acceptance/HomepageCept.php
Run the tests!
$ vendor/bin/codecept run
[snip]
OK (13 tests, 63 assertions)
$
12. CodeCeption introduction and use in Yii
Acceptance tests using PHPBrowser
BDD scenarios can be easily translated into acceptance tests, e.g.:
“As an account holder
I want to be able to login
so I can check my dashboard”
13. CodeCeption introduction and use in Yii
A “practical” example
<?php
$I = new WebGuy($scenario);
$I->wantTo(‘login to check the
dashboard’);
$I->amOnPage(‘/’);
$I->see(‘Yii2 test’);
$I->seeLink(‘login’, ‘site/login’);
$I->click(‘login’);
$I->see(‘Login’, ‘h1’);
// fillField() on the form
$I->click(‘login-button’);
$I->seeLink(‘Logout (admin)’);
$I->see(‘Admin dashboard’);
“As an account holder
I want to be able to login
so I can check my dashboard”
14. CodeCeption introduction and use in Yii
Very similar to each other in terms of commands, but...
Acceptance tests can run cross-browser compatibility
checks using Selenium Webdriver, ZombieJS, etc
Functional are simpler and more straight forward to
implement.
Functional are good for testing APIs and REST interfaces.
The Goutte engine in functional does not know how to JS!
Acceptance vs Functional tests
15. CodeCeption introduction and use in Yii
So what about Yii1?
❖ Functional tests using Selenium RC.
❖ Unit tests using PHPUnit (via PEAR).
Since PHPUnit >= 3.6 and the Composer Revolution,
things started to go awry.
Yii’s autoloaders and the new PHPUnit’s don’t fit together.
Cannot take full advantage of newest Selenium Webdriver.
16. CodeCeption introduction and use in Yii
Using CodeCeption in Yii1
follow the CodeCeption quickstart guide (http://codeception.com/quickstart)
$ mkdir protected/vendor/bin && cd protected/vendor/bin
$ wget http://codeception.com/codecept.phar && chmod a+x codecept.phar
Initialise the directory structure
$ cd protected/ && vendor/bin/codecept.phar bootstrap
Initializing Codeception in /mnt/workspace/yii1-test/protected
[snip]
Bootstrap is done. Check out /mnt/workspace/yii1-test/protected/tests directory
$
17. CodeCeption introduction and use in Yii
Additional modules and configuration
install the Yii1 CodeCeption Bridge (https://github.com/Codeception/YiiBridge)
$ git clone [email protected]:Codeception/YiiBridge.git tests/_data/YiiBridge
$ echo "require_once __DIR__.'/_data/YiiBridge/yiit.php';" >> tests/_bootstrap.php
Configure your tests/<type>.suite.yaml file(s) and add Yii1, configuring it:
class_name: MyGuy
modules:
enabled: [Yii1, Filesystem, MyHelper]
config:
Yii1:
appPath: '/mnt/workspace/yii1-test/index-test.php'
url: 'http://sandbox/yii1-test/index-test.php'
18. CodeCeption introduction and use in Yii
$ vendor/bin/codecept.phar build
Building Guy classes for suites: functional, acceptance, unit
Build and run
Re-run the build script now that Yii1 has been setup.
This is needed for any change made on the yaml files.
Create and implement your tests and run the suite(s)
$ vendor/bin/codecept.phar generate:cept functional Homepage
Test was created in HomepageCept.php
$ vim tests/functional/HomepageCept.php
$ vendor/bin/codecept.phar run functional
19. CodeCeption introduction and use in Yii
Few notes on Unit tests
CodeCeption unit tests won’t be available, but PHPUnit:
$ vendor/bin/codecept.phar generate:phpunit unit LoginForm
Test was created in /mnt/workspace/yii1-test/protected/tests/unit/LoginFormTest.php
When creating the tests you need to adjust the extended class to be:
class LoginFormTest extends CTestCase # or CDbTestCase
{
If using CDbTestCase, remember to call the parent classes’ in the setUp() and
tearDown() methods to make fixtures work as expected.
20. CodeCeption introduction and use in Yii
Other cool stuff
❖ Interactive console
❖ Grouping
❖ Dependencies
❖ Cest classes
❖ PageObjects
❖ StepObjects
❖ Environments
22. CodeCeption introduction and use in Yii
Now, go and test stuff!
and when in doubt:
read the generated code (e.g. Guys, Pages, etc...)
check the documentation of CodeCeption:
http://codeception.com
and its integration into Yii2:
http://www.yiiframework.com/doc-2.0/ext-codeception-index.html
23. Thank you for listening!
Yii London Meetup - 15 April 2014
Matteo ‘Peach’ Pescarin
@ilPeach
http://peach.smartart.it