
import java.io.*;
import java.util.*;

public class d
{
    static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;

        public FastReader()
        {
            br = new BufferedReader(new
                    InputStreamReader(System.in));
        }

        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }

        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }

    //  long start = System.currentTimeMillis();
//  long end = System.currentTimeMillis();
//  System.out.println((end - start) + "ms");
    public static void main(String[] args)
    {
        FastReader s=new FastReader();
        int t = s.nextInt();
        for(int tt=0;tt<t;tt++){
            int n = s.nextInt();
            int m = s.nextInt();
            char[][] grid = new char[n][m];
            for(int i=0;i<n;i++){
                grid[i] = s.nextLine().toCharArray();
            }
            System.out.println(solve(n,m,grid));
        }

    }
    public static String solve(int n,int m,char[][] grid){
        //make all blacks surroundings build a wall
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(grid[i][j]=='B'){
                    if(i-1>=0 && grid[i-1][j]=='.'){
                        grid[i-1][j] = '#';
                    }
                    if(i+1<n && grid[i+1][j]=='.'){
                        grid[i+1][j] = '#';
                    }
                    if(j-1>=0 && grid[i][j-1]=='.'){
                        grid[i][j-1] = '#';
                    }
                    if(j+1<m && grid[i][j+1]=='.'){
                        grid[i][j+1] = '#';
                    }
                }
            }
        }
        //now make bfs on (n,m)


        boolean[][] visited = new boolean[n][m];
        if(grid[n-1][m-1]!='#'){
            Queue<Pair> queue = new LinkedList<>();
            queue.add(new Pair(n-1,m-1));
            visited[n-1][m-1] = true;
            while (!queue.isEmpty()){
                Pair p = queue.remove();
                int i = p.x;
                int j = p.y;
                if(i-1>=0 && grid[i-1][j]!='#'){
                    if(!visited[i-1][j]){
                        queue.add(new Pair(i-1,j));
                        visited[i-1][j] = true;
                    }
                }
                if(i+1<n && grid[i+1][j]!='#'){
                    if(!visited[i+1][j]){
                        queue.add(new Pair(i+1,j));
                        visited[i+1][j] = true;
                    }
                }
                if(j-1>=0 && grid[i][j-1]!='#'){
                    if(!visited[i][j-1]){
                        queue.add(new Pair(i,j-1));
                        visited[i][j-1] = true;
                    }
                }
                if(j+1<m && grid[i][j+1]!='#'){
                    if(!visited[i][j+1]){
                        queue.add(new Pair(i,j+1));
                        visited[i][j+1] = true;
                    }
                }

            }
        }
//        debug(visited);
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(grid[i][j]=='G' && !visited[i][j]){
                    return "No";
                }
                if(grid[i][j]=='B' && visited[i][j]){
                    return "No";
                }
            }
        }
        return "Yes";
    }

    static class Pair{
        int x;
        int y;
        Pair(int x,int y){
            this.x = x;
            this.y = y;
        }
    }

    public static void print(String str,int val){
        System.out.println(str+"  "+val);
    }

    public static void print(Object[] obj){
        for(Object a:obj){
            System.out.println(a);
        }
    }

    public static void print(Object[][] obj){
        for(Object[] a:obj){
            System.out.println(Arrays.toString(a));
        }
    }

    public static void debug(long[][] arr){
        int len = arr.length;
        for(int i=0;i<len;i++){
            System.out.println(Arrays.toString(arr[i]));
        }
    }
    public static void debug(int[][] arr){
        int len = arr.length;
        for(int i=0;i<len;i++){
            System.out.println(Arrays.toString(arr[i]));
        }
    }
    public static void debug(boolean[][] arr){
        int len = arr.length;
        for(int i=0;i<len;i++){
            System.out.println(Arrays.toString(arr[i]));
        }
    }
    public static void debug(String[] arr){
        int len = arr.length;
        for(int i=0;i<len;i++){
            System.out.println(arr[i]);
        }
    }

    public static void print(int[] arr){
        int len = arr.length;
        for(int i=0;i<len;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.print('\n');
    }
    public static void print(String[] arr){
        int len = arr.length;
        for(int i=0;i<len;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.print('\n');
    }
    public static void print(long[] arr){
        int len = arr.length;
        for(int i=0;i<len;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.print('\n');
    }


//    OutputStream out = new BufferedOutputStream( System.out );
//        for(int i=1;i<n;i++){
//    out.write((max_divisor[i]+" ").getBytes());
//}
//        out.flush();



}
